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

首頁 > 數據庫 > MySQL > 正文

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

2024-07-24 13:05:55
字體:
來源:轉載
供稿:網友

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 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德惠市| 綦江县| 分宜县| 南宁市| 长汀县| 宣汉县| 资溪县| 泸水县| 紫金县| 原平市| 千阳县| 巴马| 榆树市| 林甸县| 邛崃市| 峨边| 永平县| 华坪县| 道孚县| 麻栗坡县| 柞水县| 庆阳市| 韶山市| 渝北区| 昭平县| 通化市| 弥勒县| 顺义区| 西丰县| 洛川县| 罗甸县| 武义县| 汉川市| 鹿邑县| 泸州市| 鄂托克前旗| 顺昌县| 成安县| 兴隆县| 涪陵区| 海口市|