執行一系列MySQL指令時,處理錯誤以確保資料完整性至關重要。實現此目的的一種方法是在任何命令遇到異常時自動回滾整個事務。
要設定自動回滾,請使用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 ;
此程序定義一個處理程序(CONTINUE HANDLER FOR SQLEXCEPTION),如果發生SQL 異常,該處理程序(CONTINUE HANDLER FOR SQLEXCEPTION),如果發生SQL 異常,該處理程序(CONTINUE HANDLER FOR SQLEXCEPTION),如果發生SQL 異常,該處理程序(CONTINUE HANDLER FOR SQLEXCEPTION),如果發生SQL 異常,該處理程序程式將_rollback 標誌設為1。在執行交易中的各個命令後,它會檢查 _rollback 標誌以確定是否回滾或提交交易。
透過實作此技術,命令執行期間遇到的任何異常都會導致整個事務回滾返回,確保部分變更不會套用到資料庫。
以上是如何在異常時自動回滾MySQL事務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!