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

teka-teki transaksi MySQL

MySQL tidak meneruskan kode kesalahan ke pemanggil dan berdasarkan kode kesalahan ini penelepon bebas memutuskan apakah ingin melakukan pekerjaan yang dilakukan hingga saat ini (mengabaikan kesalahan dengan INSERT khusus ini pernyataan) atau untuk mengembalikan transaksi.

Ini tidak seperti PostgreSQL yang selalu membatalkan transaksi karena kesalahan dan perilaku ini merupakan sumber dari banyak masalah.

Pembaruan:

Ini adalah praktik yang buruk untuk menggunakan ROLLBACK tanpa syarat di dalam prosedur tersimpan.

Prosedur tersimpan dapat ditumpuk dan transaksi tidak, jadi ROLLBACK dalam prosedur tersimpan bersarang akan memutar kembali ke awal transaksi, bukan ke keadaan eksekusi prosedur tersimpan.

Jika Anda ingin menggunakan transaksi untuk memulihkan status basis data pada kesalahan, gunakan SAVEPOINT konstruksi dan DECLARE HANDLER untuk mengembalikan ke savepoints:

CREATE PROCEDURE prc_work()
BEGIN
        DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK TO sp_prc_work;
        SAVEPOINT sp_prc_work;
        INSERT  …;
        INSERT  …;
        …
END;

Kegagalan pada salah satu sisipan akan mengembalikan semua perubahan yang dibuat oleh prosedur dan keluar darinya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penyatuan koneksi vs koneksi bertahan mysqli

  2. Bagaimana cara memilih subkategori dari kategori yang dipilih menggunakan fungsi bersarang di PHP?

  3. Kesalahan:Isi:Properti SelectCommand.Connection belum diinisialisasi.

  4. Memasukkan data ke Mysql di Malayalam

  5. Cara mengekstrak data json dan memasukkannya ke mysql php