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