Rumah > Artikel > pangkalan data > Bagaimana untuk Melancarkan Transaksi MySQL secara Automatik pada Pengecualian?
Apabila melaksanakan satu siri arahan MySQL, adalah penting untuk mengendalikan ralat untuk memastikan integriti data. Satu cara untuk mencapai matlamat ini ialah dengan melancarkan keseluruhan transaksi secara automatik sekiranya mana-mana arahan menghadapi pengecualian.
Untuk menyediakan rollback automatik, gunakan sintaks DECLARE ... HANDLER:
DELIMITER $$ CREATE PROCEDURE `sp_fail`() BEGIN DECLARE `_rollback` BOOL DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1; START TRANSACTION; INSERT INTO `tablea` (`date`) VALUES (NOW()); INSERT INTO `tableb` (`date`) VALUES (NOW()); INSERT INTO `tablec` (`date`) VALUES (NOW()); -- FAIL IF `_rollback` THEN ROLLBACK; ELSE COMMIT; END IF; END$$ DELIMITER ;
Prosedur ini mentakrifkan pengendali (CONTINUE HANDLER FOR SQLEXCEPTION) yang menetapkan bendera _rollback kepada 1 jika pengecualian SQL berlaku. Selepas melaksanakan perintah individu dalam urus niaga, ia menyemak bendera _rollback untuk menentukan sama ada hendak melancarkan semula atau melakukan transaksi.
Dengan melaksanakan teknik ini, sebarang pengecualian yang dihadapi semasa pelaksanaan perintah akan menyebabkan keseluruhan transaksi digulung. kembali, memastikan perubahan separa tidak digunakan pada pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Melancarkan Transaksi MySQL secara Automatik pada Pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!