MySQL儲存過程中實現回滾

2021-09-02 21:43:19 字數 1041 閱讀 7992

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

1

drop

procedure

ifexists

pro_test;

2create

procedure

pro_test3(

4 para_a varchar(50

),5 para_b varchar(50)6

)7begin

8declare result_code integer

default

0; --

定義返回結果並賦初值0

9declare

continue handler for sqlexception set result_code=

1; --

在執行過程中出任何異常設定result_code為1

10declare

continue handler for

not found set result_code =

2; --

如果表中沒有下一條資料則置為2

11 ##有對應的異常時候會跳到這裡執行語句,如果是continue 就會繼續異常**處向下執行

12 start transaction; --

開始事務

1314

/*15

* 這裡寫具體的業務處理...

16* 業務處理過程中可以根據實際情況自定義result_code

17*/

1819

if result_code =

1then

--可以根據不同的業務邏輯錯誤返回不同的result_code,這裡只定義了1和0

20rollback

; 21

else

22commit

; 23

endif;24

select

result_code;

25end ;

儲存過程 中的事務 rollback 回滾

在編寫sql server 事務相關的儲存過程 時,經常看到下面這樣的寫法 begin tran update statement 1 update statement 2 delete statement 3 commit tran 這樣編寫的sql存在很大隱患。請看下面的例子 create ta...

MySQL儲存過程事務回滾

sql過程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 delimiter createdefiner root localhost procedure test procedure begin declareerrnoint declarecontinueh...

Mysql過程中區域性事務回滾

label pro begin declare t error integer default 0 declare continue handler for sqlexception set t error 1 異常時設定為1 insert into temp values test test 測試...