mysql实现事务的提交和回滚实例

作者:shichen2014 时间:2024-01-23 04:13:12 

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 


标签:mysql,事务,回滚
0
投稿

猜你喜欢

  • python队列通信:rabbitMQ的使用(实例讲解)

    2021-01-11 05:04:55
  • javascript利用apply和arguments复用方法

    2024-04-16 09:13:19
  • MySQL如何清空慢查询文件

    2024-01-17 07:45:37
  • SQL Server分页方法汇总

    2024-01-26 20:18:49
  • Go语言指针用法详解

    2023-08-05 17:06:36
  • Ajax的错误处理机制探讨

    2007-09-07 09:53:00
  • 浅析python的Lambda表达式

    2021-11-16 23:51:19
  • python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法

    2023-06-22 01:57:01
  • Sql Server 2008完全卸载方法(其他版本类似)第1/2页

    2024-01-14 01:20:09
  • 解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题

    2024-05-10 14:15:54
  • 还不知道Anaconda是什么?读这一篇文章就够了

    2022-02-19 01:36:50
  • python 抓包保存为pcap文件并解析的实例

    2023-04-03 03:52:04
  • vue-cli项目中怎么使用mock数据

    2024-05-09 15:25:26
  • 在Python中使用defaultdict初始化字典以及应用方法

    2021-01-05 02:03:02
  • Go处理json数据方法详解(Marshal,UnMarshal)

    2024-02-06 11:47:24
  • Python退火算法在高次方程的应用

    2023-09-07 22:39:30
  • JSQL SQLProxy 的 php 版本代码

    2023-11-15 01:05:54
  • 原生js实现移动小球(碰撞检测)

    2024-04-19 09:56:01
  • matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)

    2021-06-09 02:33:06
  • Flask中嵌套启动子线程的方法示例详解

    2023-01-13 21:13:08
  • asp之家 网络编程 m.aspxhome.com