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

2023年 4月 23日 71.8k 0

mysql创建存储过程的官方语法为: 复制代码 代码如下: START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET AUTOCOMMIT = {0 | 1} 我这里要说明

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 

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论