事务控制语言(TCL)
-
事务控制语言有时可能需要使用DML进行批量数据的删除,修改,增加。
-
比如,在一个员工系统中,想删除一个人的信息。除了删除这个人的基本信息外,还应该删除与此人有关的其他信息,如邮箱,地址等等。那么从开始执行到结束,就会构成一个事务。对于事务,要保证事务的完整性。要么成功,要么撤回。
-
事务要符合四个条件(ACID):
- 原子性:事务要么成功,要么撤回。不可切割性。
- 一致性:事务开始前和结束后,要保证数据的一致性。转账前 账号A 和 账号B 的钱总数为10000,转账后账号A 和 账号B 的钱总数应该还是10000;
- 隔离性:当涉及到多用户操作同一张表时,数据库会为每一个用户开启一个事务。那么当其中一个事务正在进行时,其他事务应该处于等待状态。保证事务之间不会受影响。
- 持久性:当一个事务被提交后,我们要保证数据库里的数据是永久改变的。即使数据库崩溃了,我们也要保证事务的完整性。
-
commit 提交
-
rollback 撤回
-
savepoint 保存点
-
只有DML操作会触发一个事务。存储引擎(ENGINE):就是指表类型.当存储引擎为innodb时,才支持事务。默认的存储引擎为Myisam。不支持事务。
-
事务的验证:
第一步:start transaction(交易)
第二步:savepoint 保存点名称
第三步:DML
第四步:commit/rollback