事务控制语言TCL
mysql默认情况为自动提交,若是要管理事务就必须设置手动提交,手动设置事务提交
set auto_committed : false
当事务需要提交时输入:
commit
当事务需要回滚时:
rollback
事务的ACID的特性
四大特性:
原子性: 表中的字段不可以在拆分, 比如150块人民币,必须要差分成100块钱和50块钱, 而不是像100元大钞那样不能拆分。
一致性:数据前后状态保持一致。类似于质量守恒定律,比如张三借给李四100块钱,张三少了100,李四多了100,不管中途发生什么情况这100块钱不会不翼而飞。
隔离性:两个事务同时执行时,不会互相产生干扰。
持久性:事务一旦提交,表中数据便会持续存在。数据库就会被永久改变
事务的隔离级别:
脏读:事务1对数据进行了更新,但是还未提交,那么事务2此时看未提交的数据,若是事务进行了回滚操作,那么事务看到的数据就是脏数据
不可重复读 : 事务1两次读取数据,而事务2在事务1两次读取数据中进行了对事务1读取的数据进行了更新操作,那么就会导致事务1两次读取的数据不一致
幻读 :一个事务两次读取数据,但是第二次读取的数据比第一次多了
丢失更新 :撤销一个事务1时,把事务2已经更新完成的数据给覆盖。
隔离级别:
1.Read uncommitted 读未提交,任何情况都无法保证
2.Read committed 读已提交: 可避免脏读发生
3.Repeatable read 可重复读:可避免脏读,不可重复读的发生
4:Serializable 串行化: 让事务序列化,加锁,当一个事务完成在进行下一个事务,效率低,但是安全系数高,可避免脏读,不可重复读,幻读发生