Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Transaksi kereta api

Jika Anda memiliki campuran kode yang memerlukan transaksi eksplisit dan kode yang dapat mengandalkan komit otomatis, mungkin Anda tidak boleh menonaktifkan komit otomatis untuk semua koneksi. Anda berada di jalur yang benar bertanya-tanya apakah ini akan memengaruhi kode lain. Jika Anda menonaktifkan autocommit, tetapi kode lain tidak tahu bahwa ia harus berkomitmen agar pekerjaannya dilakukan, maka itu akan menjadi masalah. Pekerjaan yang tidak dikomit akan dibatalkan saat koneksi ditutup.

Anda harus mengetahui bahwa mesin penyimpanan default untuk MySQL adalah MyISAM , yang tidak mendukung transaksi sama sekali. Saat Anda membuat perubahan pada tabel yang menggunakan MyISAM, perubahan akan langsung diterapkan, terlepas dari permintaan eksplisit Anda untuk memulai dan menyelesaikan transaksi, dan terlepas dari status komit otomatis. Jadi, Anda tidak akan dapat memutar kembali apa pun yang terjadi, kecuali jika Anda membuat tabel menggunakan InnoDB mesin penyimpanan (atau mesin penyimpanan aman transaksi lainnya seperti BDB ).

Ini tidak perlu untuk menonaktifkan mode autocommit untuk menggunakan transaksi di MySQL. Cukup mulai transaksi secara eksplisit. Pernyataan SQL berikut akan menjadi bagian dari transaksi hingga Anda melakukan atau mengembalikan transaksi itu, terlepas dari nilai komit otomatis pada koneksi Anda saat ini.

http://dev.mysql.com/doc/refman/5.0 /en/commit.html mengatakan:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernasi untuk mempertahankan Tanggal selama

  2. Bagaimana cara menyalin baris dan menyisipkan di tabel yang sama dengan bidang peningkatan otomatis di MySQL?

  3. Sql Query - Membatasi hasil kueri

  4. PHP PDOException:SQLSTATE[HY000] [2019] Tidak dapat menginisialisasi kumpulan karakter utf8mb4

  5. Bagaimana cara kerja injeksi SQL dan bagaimana cara melindunginya?