在观看本文前 你需要了解什么事事务
如果不太了解 可以先查看我的文章
MySQL事务基本概念
首先 我们这里有一张 staff 用户表
然后来一波 减岁交易大法 赵敏买个了 黄飞鸿十年时光 那么就是
先查询确认赵敏加上十岁不会过百
将赵敏年龄加十岁
确认黄飞鸿减去十岁不会小于零
然后黄飞鸿年龄减十岁
这四个事情 就需要一个事务 避免 其中一步失败 一个年龄加了 一个年龄还没变的问题
先来看 事务的基本操作如下
然后我们来写代码演示一下
我们先执行语句
select @@autocommit;
此时 我们查到的 是 1 按事务类型区分 说明我们现在数据库的事务提交方式是自动提交
然后我们执行sql
set @@autocommit = 0;
这样 我们就将事务的提交方式改为了 手动提交
我们再次执行
select @@autocommit;
这次我们查到 的就是 0了
然后我们一口气编写sql
select age from staff where name = "赵敏";
UPDATE staff SET age = age + 10 WHERE name = "赵敏";
select age from staff where name = "黄飞鸿";
UPDATE staff SET age = age - 10 WHERE name = "黄飞鸿";
这里查询了 赵敏的年龄 增加了赵敏的年龄 减掉了黄飞鸿的年龄
sql执行成功
但打开表
数据并没有变化 因为我们的事务还没有提交
然后我们执行
commit
提交事务
然后再打开表查询 sql刚才的逻辑 就把数据改变了
如果事务中的程序失败了 你就可以执行
rollback;
回滚事务
这个主要就是 程序出错时 将一切事务操作还原 保证数据的正确性