Pemulihan Automatik jika TRANSAKSI KOMIT Ditinggalkan
Dalam pernyataan SQL yang diberikan:
START TRANSACTION; BEGIN; INSERT INTO prp_property1 (module_name,environment_name,NAME,VALUE) VALUES ('','production','','300000'); /** Assume there is syntax error SQL here...**/ Blah blah blah DELETE FROM prp_property1 WHERE environment_name = 'production'; COMMIT TRANSACTION;
Timbul persoalan sama ada urus niaga digulung semula secara automatik kerana penyata TRANSAKSI COMMIT tidak pernah dicapai kerana ralat sintaks.
Gelagat Balik Transaksi
Bertentangan dengan andaian, urus niaga tidak secara automatik digulingkan semula apabila menghadapi ralat. Tingkah laku ini biasanya dilaksanakan dalam tetapan aplikasi klien. Sebagai contoh, pelanggan baris arahan MySQL menamatkan pelaksanaan dan keluar apabila ralat, yang mengakibatkan penarikan balik mana-mana transaksi yang sedang berjalan.
Apabila membangunkan aplikasi tersuai, pembangun mempunyai kawalan ke atas dasar pemulangan semula transaksi. Walau bagaimanapun, pengecualian tertentu wujud:
Di luar senario khusus ini, ralat tidak menyebabkan penarikan balik secara automatik. Ralat dikembalikan dan pembangun bebas untuk memutuskan tindakan seterusnya, termasuk melakukan transaksi walaupun terdapat ralat.
Atas ialah kandungan terperinci Adakah COMMIT TRANSACTION Omission Automatically Rollback Transactions?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!