一:事物的起源
- 事物的四大特性:
- 原子性(atomicity):事务的所有操作在数据库中要么全做要么都不做
- 隔离性(isolation):一个事务的执行不能被其他事务干扰
- 一致性(consistency):数据不会因为事务的执行而遭受破坏
- 持久性(durability):一个事务一旦提交,对数据库的改变必须是永久的,即便系统出现故障也是如此
二:事物的概念
- 把需要保证:原子性、隔离性、一致性、持久性的,一个或多个数据库操作,称为:事物(transaction)。
- 事务的 5种状态:
- 活动状态:事务的初始状态,事务执行时处于这个状态
- 部分提交状态:当操作序列的最后一条语句自动执行后,事务处于部分提交状态
- 失败状态:由于错误,事务不能正常执行,进入失败状态;这种事务必须进行回滚
- 中止状态:事务回滚并且数据库恢复到事务开始执行前的状态
- 提交状态:当事务成功完成后,称事务处于提交状态
三:事务的语法
注:只有 InnoDB 存储引擎才支持事务,MyISAM 存储引擎,不支持事务,自动提交
- 开启事务:(x2)
BEGIN;
START TRANSACTION;
- read only:只读事务
- read write:读写事务
- with consistent snapshot:启动一致性读
- 保存点:
- 设置:
savepoint p1;
- 会滚:
rollback to p1;
- 删除:
release p1;
- 会滚事务:
rollback;
- 提交事务:
commit;
- 设置自动提交:
show variables like '%autocommit%';
- 隐式提交:(x6)执行某些语句前,会自动提交上一个事务。
四:事务控制台操作
-- 开启事务
start TRANSACTION
-- 设置保存点A
SAVEPOINT A
-- 执行 dml 操作
insert into employee VALUES('')
-- 设置保存点B
SAVEPOINT B
insert INTO employee values('');
-- 回退
ROLLBACK to B;
ROLLBACK TO A
-- 回退全部事务
ROLLBACK ;
-- 提交事务,所有操作生效,不能回退;
COMMIT;