首頁  >  文章  >  資料庫  >  如何在異常時自動回滾MySQL事務?

如何在異常時自動回滾MySQL事務?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-23 03:24:10206瀏覽

How to Automatically Roll Back MySQL Transactions on Exceptions?

異常時回滾MySQL事務

執行一系列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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn