标题事务管理(重点)
事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是 一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。
假如 客户端A和客户端B都在卖票,当客户端A检查还有一张票时,将票卖掉,还没有执行更新数据库时,客户端B检查了票数,发现大于0,于是又卖了一次票,然后A将票数更新回数据库,这时就出现了同一张票被卖了两次。
1. 事务基本操作
案例:
银行转账更需要考虑事务的问题。
- 创建测试表
create table account(
id int primary key,
name varchar(50) not null default '',
balance decimal(10, 2) not null default 0.0
);
- 开始一个事务
start transaction
- 创建一个保存点
savepoint 保存点名
- 回到保存点(根据具体情况)
rollback to 保存点名;
代码演示:
mysql> start transaction; --开启事务
mysql> savepoint aa; --设置保存点
mysql> insert into account values(1, '张三'