国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql實現事務的提交和回滾實例

2020-01-18 23:15:07
字體:
來源:轉載
供稿:網友

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 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孝义市| 安泽县| 桃园市| 蒙山县| 屏南县| 通化县| 阳山县| 莱芜市| 鄂温| 阿拉善左旗| 马尔康县| 阿尔山市| 镶黄旗| 新化县| 若尔盖县| 高要市| 莎车县| 体育| 南部县| 江阴市| 仪征市| 河北区| 景德镇市| 宽甸| 盱眙县| 云阳县| 东乡族自治县| 合阳县| 舒兰市| 安乡县| 彭水| 台江县| 临海市| 横山县| 房山区| 项城市| 称多县| 荣昌县| 苏尼特右旗| 平舆县| 武陟县|