国产探花免费观看_亚洲丰满少妇自慰呻吟_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 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁化县| 洛川县| 磐安县| 阳朔县| 手游| 丘北县| 峨眉山市| 大港区| 宁津县| 玉林市| 双江| 高邑县| 工布江达县| 红安县| 九江市| 东阳市| 平安县| 宜丰县| 宁乡县| 昆山市| 东港市| 定结县| 太湖县| 察哈| 衡阳县| 岳池县| 教育| 冀州市| 九江县| 呼和浩特市| 得荣县| 襄城县| 崇阳县| 泗洪县| 曲阳县| 项城市| 荃湾区| 江阴市| 汝州市| 黎平县| 中西区|