MySQL存儲過程中實現回滾


用存儲過程處理復雜的業務時,可能涉及到對多張表格的操作,在任一個步驟出了問題,就需要對前面的操作回滾。舉例實現:

 1 DROP PROCEDURE IF EXISTS pro_test;
 2 CREATE PROCEDURE pro_test
 3 (
 4     para_a varchar(50),
 5     para_b varchar(50)
 6 )
 7 BEGIN
 8     DECLARE result_code INTEGER DEFAULT 0; -- 定義返回結果並賦初值0
 9     DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET result_code=1; -- 在執行過程中出任何異常設置result_code為1
10     DECLARE CONTINUE HANDLER FOR NOT FOUND SET result_code = 2; -- 如果表中沒有下一條數據則置為2
11 
12     START TRANSACTION; -- 開始事務
13 
14     /*
15     * 這里寫具體的業務處理...
16     * 業務處理過程中可以根據實際情況自定義result_code
17     */
18 
19     IF result_code = 1 THEN -- 可以根據不同的業務邏輯錯誤返回不同的result_code,這里只定義了1和0
20         ROLLBACK; 
21     ELSE 
22         COMMIT; 
23     END IF;
24 select result_code;
25 END ;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM