一、TPL:数据事务管理语言 Transaction Processing Language
1、数据事务管理关键字
(1)开启手动事务 start transaction;
- 开启后自动提交事务会暂时失效,且对数据库的增删改sql语句的数据不会直接存入到数据库, 而示保存在事务管理日志中,查询也是首先查询事务管理日志里面是否存在该数据,如果存在直接显示,不存在则再去数据库中查找。
- 一旦手动提交事务后,再次操作则又会变为自动提交事务。
(2)commit 关键字
- commit 表示事务提交,当 commit 指令来的时候,积攒的事务会进行提交,写入到数据库。
(3)autocommit 关键字
MySQL自动提交事务系统变量值,默认状态为on,默认值为1,。一旦有增删改操作查操作,都会自动执行这个命令将数据写入到数据库
(4)rollback关键字
- rollback 表示事务回滚,在事务管理日志里面的数据,是我们不需要向数据库提交的事务,这样的事务系统会自动执行 rollback 指令销毁;
- 设置回滚点:为了可以 rollback 到指定回滚点位置,一个事务可以设置多个回滚点,然后通过回滚到指定的回滚点完成对应事务的回滚销毁。
- 语法:
savepoint 回滚点名字;
- rollback 到回滚点位置:
rollback to 回滚点位置
,回滚到指定位置之后事务管理日里面的数据不会直接自动提交,必须要等 commit 指令。
4、事务的特性:ACID
(1)原子性:一个事务区间之内是一个整体,不可分割;
(2)一致性:建立在原子性之上,在事务执行的前后,数据库的数据保持一致, 要么数据全部更新,要么数据全部销毁;
(3)隔离性:当事务开启之后,其余的sql指令不会影响该事务区间之内的sql;
(4)永久性:当事务管理中的数据完全提交到数据库之后,数据将永久保存生效, 若是回滚,数据将全部失效。