介紹了mysql實現事務的提交和回滾。
mysql存儲過程創建官方語法為:
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT = {0 | 1}
說明,mysql事務處理多個SQL語句的回滾情況。比如說在一個存儲過程中啟動一個事務,這個事務同時往三個表中插入數據,每插完一張表需要判斷其是否操作成功,如果不成功則需要回滾,最後一張表判斷其插入成功之後commit。注意,不能直接使用事務的collback,這樣是不能實現回滾的或者說可能出現意外的錯誤。
需要一個條件判斷,比如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