程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql事務提交與回滾實例

mysql事務提交與回滾實例

編輯:MySQL綜合教程

介紹了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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved