事务的提交方式:自动提交(@@autocommit=1)和手动提交(@@autocommit=0)
查询和修改事务提交方式:
- -- 查看事务提交方式(@@标识表示这是个系统变量)
- select @@autocommit ;
-
- -- 修改事务提交方式为自动提交
- set @@autocommit = 0 ;
事务基本操作
- -- 开始事务
- start transaction
- -- 或
- begin transaction ;
-
- -- 提交事务
- commit;
-
- -- 回滚事务
- rollback;
初始状态:

事务操作(要把事务操作变为手动提交)
- -- 开启事务
- start transaction
-
- -- 1. 查询余额
- select *
- from account
- where name = '张小明';
-
- -- 2. 张小明的余额减少1000
- update account
- set money = money - 1000 where name = '张小明';
-
- -- 在中间随便添加个异常,模拟操作错误
- wwwwwwwww
-
- -- 3. 李小红的余额增加1000
- update account
- set money = money + 1000 where name = '李小红';
-
- -- 如果正常执行完毕, 则提交事务
- commit;
-
- -- 如果执行过程中报错, 则回滚事务
- rollback;
执行结果:还是初始状态,因为事务处理过程报错会回滚

不开启事务执行:
- -- 1. 查询余额
- select *
- from account
- where name = '张小明';
-
- -- 2. 张小明的余额减少1000
- update account
- set money = money - 1000 where name = '张小明';
-
- -- 在中间随便添加个异常,模拟操作错误
- wwwwwwwww
-
- -- 3. 李小红的余额增加1000
- update account
- set money = money + 1000 where name = '李小红';
执行结果:发现数据逻辑出错(出现只减不增的情况)
