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');
-- 測試第一段事務回滾
start transaction;
insert into temp values('test2', 'test2');
insert into aaaaa values(2,3); -- 製造異常
if t_error = 1 then
rollback ;
else
commit;
end if;
insert into temp values('test3', 'test3');
-- 測試第二段事務回滾
start transaction;
insert into temp values('test4', 'test4');
insert into aaaaa values(2,3);
if t_error = 1 then
rollback;
else
commit;
end if;
end
注意:只能使用continue,當遇到異常時,程式還會繼續往下執行,才能執行到回滾事務那一步,若使用exit,過程將在異常處退出,也就無法回滾事務。
declare continue handler for sqlexception set t_error=1;
declare exit handler for sqlexception set t_error=1;
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...
儲存過程 中的事務 rollback 回滾
在編寫sql server 事務相關的儲存過程 時,經常看到下面這樣的寫法 begin tran update statement 1 update statement 2 delete statement 3 commit tran 這樣編寫的sql存在很大隱患。請看下面的例子 create ta...
mysql事務回滾
先收集網上的一些,待仔細測試研究 事務是資料庫更新操作的基本單位,事務回滾是指將該事務已經完成的對資料庫的更新操作撤銷。所謂事務是使用者定義的乙個資料庫操作序列,這些操作要麼全做要麼全不做,是乙個不可分割的工作 單位。例如,在關聯式資料庫中,乙個事務可以是一條sql語句 一組sql語句或整個程式。簡...