Pemulihan Automatik Tanpa Ketiadaan TRANSAKSI KOMIT
Apabila melaksanakan satu siri pernyataan SQL dalam transaksi, tujuannya adalah untuk semua perubahan kepada digunakan secara atom atau tidak sama sekali. Dalam situasi di mana penyataan berikutnya menghadapi ralat, persoalan timbul sama ada urus niaga digulung semula secara automatik tanpa perintah URUS NIAGA GULUNG SEMULA yang jelas.
Pertimbangkan contoh berikut:
START TRANSACTION; BEGIN; INSERT INTO prp_property1 (module_name,environment_name,NAME,VALUE) VALUES ('','production','','300000'); /** Assume that a syntax error occurs here...**/ Blah blah blah DELETE FROM prp_property1 WHERE environment_name = 'production'; COMMIT TRANSACTION;
Tanggapan yang salah ialah transaksi digulung semula secara automatik sebaik sahaja ralat berlaku.
Walau bagaimanapun, ini bukan gelagat biasa sistem pangkalan data. Sekiranya tiada dasar yang dikuatkuasakan oleh pelanggan, ralat tidak mencetuskan pemulangan semula secara automatik. Sebaliknya, ralat dilaporkan dan transaksi tetap terbuka, membolehkan pengguna mengambil tindakan yang sewajarnya.
Dalam contoh yang diberikan, jika ralat sintaks ditemui, penyata sisipan akan gagal, tetapi transaksi tidak akan digulung semula. Pernyataan DELETE masih akan dilaksanakan dan data akan dipadamkan daripada jadual.
Tingkah laku ini boleh dikawal oleh pelanggan atau aplikasi yang melaksanakan transaksi. Sesetengah alatan atau rangka kerja pihak pelanggan mungkin melaksanakan dasar apabila ralat yang tidak dikendalikan mencetuskan pemulangan semula. Walau bagaimanapun, adalah penting untuk diingat bahawa ini bukan gelagat lalai dalam sistem pangkalan data dan tidak boleh dipercayai.
Untuk memastikan transaksi ditarik balik jika ralat berlaku, adalah penting untuk menggunakan pengendalian ralat atau secara eksplisit. keluarkan arahan TRANSAKSI ROLLBACK sekiranya berlaku ralat.
Atas ialah kandungan terperinci Adakah Pemulihan Automatik Berlaku Apabila TRANSAKSI KOMIT Tidak Hadir?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!