- 概念
事务是把多个操作捆绑成一个整体,事务中的若干个操作要么全部执行成功,要么全部撤回。 - 事务操作
1.开启事务 start transaction;
2.回滚事务 rollback;
3.提交事务 commit;
举例–张三给李四转账
-- 创建账户表
create table account(
id int primary key auto_increment,
name varchar(20),
balance double
);
insert into account values (null,'曹操',1000), (null,'刘备',1000);
-- 1.拆分转账步骤:
-- 曹操的账户金额减少500
update account set balance =balance-500 where name ='曹操';
-- 刘备的账户金额增加500
update account set balance =balance+500 where name ='刘备';
-- 2.还原数据,在两个操作中间加点异常
update account set balance =1000;
-- 曹操的账户金额减少500
update account set balance =balance-500 where name ='曹操';
-- 加个异常
aaa
-- 刘备的账户金额增加500
update account set balance =balance+500 where name ='刘备';
-- 3.结果曹操的金额减少500,刘备的金额没有发生变化 -- 再次还原数据
update account set balance =1000;
-- 添加事务管理
start transaction;
-- 曹操的账户金额减少500
update account set balance =balance-500 where name ='曹操';
-- 中间加个异常
aaa
-- 刘备的账户金额增加500
update account set balance =balance+500 where name ='刘备';
-- 新开启一个本地连接窗口,对比两个窗口数据,发现新窗口数据不变,说明事务在开启后,没有提交,或没有回滚,数据只是在窗口暂时发生了变化,并没有对数据库作永久的更改。此时采取回滚操作
rollback;
-- 再次观察数据,发现数据已经还原
-- 4.开启事务,不加异常,最后提交事务。
commit;