事务
事务由一个或多个SQL语句组成,是进行数据库操作的基本单位。
事务的基本属性
一个事务具有以下四种属性:
- 原子性(atomicity)
事务的操作具有原子性,要不全部执行,要不全部不执行。 - 一致性(consistency)
事务一致性指的是事务执行的结果数据库从一种正确数据状态变迁为另一种数据状态。
例如:用户A向用户B转账,用户A操作成功,用户B失败,这会造成数据不一致。一致性就是保证不论业务操作是否成功,A,B账户的存款总额是不变的。 - 隔离性(isolation)
多个事务并发执行时,一个事务的执行不会被其他事务干扰,各个并发事务之间不会相互影响。 - 永久性(durability)
一个事务一旦提交,数据会被持久保存。
事务语句
事务操作包括事务提交、事务回滚、事务撤销和设置保存点等操作。
相关语句:
- BEGIN/START TRANSACTION ,事务开始语句
- ROLLBACK [to name] ,事务回滚,可以回滚到某一个保存点
- COMMIT ,事务提交语句
- SAVEPOINT name ,事务保存点语句
实例:
BEGIN;
create table student(id int,name varchar(30),age int);
SAVEPOINT create_table;
insert into student VALUES(1,'mike',22);
SAVEPOINT insert1;
insert into student VALUES(2,'jack',2);
ROLLBACK TO insert1;
COMMIT;
回滚到插入第一条语句后,查询表结果如下:
BEGIN;
create table student(id int,name varchar(30),age int);
SAVEPOINT create_table;
insert into student VALUES(1,'mike',22);
SAVEPOINT insert1;
insert into student VALUES(2,'jack',2);
ROLLBACK;
COMMIT;
此时全部回滚,查询student表时会报错,显示此表不存在。