1、什么是事务


要么都成功,要么都失败

2、事物原则:ACID原则


详细解释的博客网址:https://blog.csdn.net/dengjili/article/details/82468576

2.1、ACID原则:原子性、一致性、持久性、隔离性

原子性(Atomicity)
要么都成功,要么都失败

一致性(Consistency)
事务前后数据的完整性必须保持一致

持久性(Durability)
事务一旦提交则不可逆,被持久化到数据库种

隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。


2.2、隔离所导致的问题

脏读:
指一个事务读取了另外一个事务未提交的数据

不可重复读:
在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)

虚读(幻读)
是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。(一般是行影响,多了一行)

3、手动执行事务


  1. --mysql是默认开启事务自动提交的
  2. --所以,手动执行一个事务之前要关闭事务自动提交,执行一个事务结束后要开启事务自动提交
  3. set autocommit = 0 --关闭事务自动提交
  4. set autocommit = 1 --开启事务自动提交
  1. --手动执行事务的规范
  2. set autocommit = 0 --关闭事务自动提交
  3. =====================================================================================
  4. start transaction --标记一个事务的开始,从这个之后的sql都在同一个事务内
  5. 修改数据之类的语句A
  6. 修改数据之类的语句B
  7. commit --提交(持久化到数据库)
  8. rollback --回滚(回到执行语句A之前的状态)
  9. =====================================================================================
  10. set autocommit = 1 --开启事务自动提交
  1. --了解事务里的一些其它特性:保存点
  2. savepoint '保存点名' --设置一个事务的保存点
  3. rollback to savepiont '保存点名' --回滚到保存点
  4. release savepoint '保存点名' --撤销删除一个保存点

/