mysql實現(xiàn)事務(wù)的提交和回滾實例
mysql創(chuàng)建存儲過程的官方語法為:
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT = {0 | 1}
我這里要說明的mysql事務(wù)處理多個SQL語句的回滾情況。比如說在一個存儲過程中啟動一個事務(wù),這個事務(wù)同時往三個表中插入數(shù)據(jù),每插完一張表需要判斷其是否操作成功,如果不成功則需要回滾,最后一張表判斷其插入成功之后commit。這里需要注意的是不能直接使用事務(wù)的collback,這樣是不能實現(xiàn)回滾的或者說可能出現(xiàn)意外的錯誤。
那么我們需要的是一個條件判斷,比如loop,因為MySql默認是會自動提交的,所以我們不用擔心rollback之后條件退出而沒有commit。
具體mysql語句如下:
begin
loop_lable: loop
start transaction;
insert into table1(f_user_id) values(user_id);
if row_count() < 1 then
set @ret = -1;
rollback;
leave loop_label;
end if;
insert into table2(f_user_id) values(user_id);
if row_count() < 1 then
set @ret = -1;
rollback;
leave loop_label;
end if;
insert into table3(f_user_id) values(user_id);
if row_count() < 1 then
set @ret = -1;
rollback;
leave loop_label;
else
set @ret = 0;
commit;
leave loop_label;
end if;
end loop;
select @ret;
end
相關(guān)文章
Mysql主從同步Last_IO_Errno:1236錯誤解決方法
最近遇到Mysql主從同步的Last_IO_Errno:1236錯誤問題,然后在網(wǎng)上查找相關(guān)解決方案,這里分享給大家,供參考。2017-10-10