文章目录
事务处理语言(TCL)
1 什么是事务
事务指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
2 事务特性
2.1原子性(ATOMICITY)
事务中的操作要么都不做,要么就全做。
2.2 一致性(CONSISTENCY)
一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功事务时,数据应处于一致的状态。
2.3 隔离性(ISOLATION)
一个事务的执行不能被其他事务干扰。
2.4 持久性(DURABILITY)
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
3 使用事务
- commit 事务提交
- rollback 事务回滚
- savepoint 设置回滚点
3.1 事务类型
3.1.1 显示事务
需要我们手动地提交或回滚。
DML语言中的所有操作都是显示事务操作。
3.1.2 隐式事务
数据库自动提交,不需要我们做任何操作,同时也不具备回滚性。
DDL,DCL语言都是隐式事务语言。
3.2 事务提交
commit
当我们执行了一个DML语言后,此时的数据并不会持久化到数据文件中,需要使用commit来确认提交。
3.3 事务回滚
rollback
当我们执行了一个DML语言后,也可以使用rollback来撤销当前对表的操作。
3.4 设置回滚点
Savepoint
Rollback to
例如:
insert into emp values(1,'ZhangSan',500,null);
SavePoint A;
insert into emp values(2,'LiSi',1000,null);
SavePoint B;
insert into emp values(3,'WangWu',1500,null);
rollback to B;
commit;
说明:这里设置了两个回滚点A和B。但是我执行了rollback to B;那么在我commit;的时候第三条数据并没有被插入到表中,只插入了前两条。我如果执行rollback to A;那么就只能插入第一条。