1、什么是事务
2、事物原则:ACID原则
详细解释的博客网址:https://blog.csdn.net/dengjili/article/details/82468576
2.1、ACID原则:原子性、一致性、持久性、隔离性
原子性(Atomicity)
要么都成功,要么都失败
一致性(Consistency)
事务前后数据的完整性必须保持一致
持久性(Durability)
事务一旦提交则不可逆,被持久化到数据库种
隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
2.2、隔离所导致的问题
脏读:
指一个事务读取了另外一个事务未提交的数据
不可重复读:
在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)
虚读(幻读)
是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。(一般是行影响,多了一行)
3、手动执行事务
--mysql是默认开启事务自动提交的--所以,手动执行一个事务之前要关闭事务自动提交,执行一个事务结束后要开启事务自动提交set autocommit = 0 --关闭事务自动提交set autocommit = 1 --开启事务自动提交
--手动执行事务的规范set autocommit = 0 --关闭事务自动提交=====================================================================================start transaction --标记一个事务的开始,从这个之后的sql都在同一个事务内修改数据之类的语句A修改数据之类的语句Bcommit --提交(持久化到数据库)rollback --回滚(回到执行语句A之前的状态)=====================================================================================set autocommit = 1 --开启事务自动提交
--了解事务里的一些其它特性:保存点savepoint '保存点名' --设置一个事务的保存点rollback to savepiont '保存点名' --回滚到保存点release savepoint '保存点名' --撤销删除一个保存点
/
