一、事务是什么
1.定义:
事务(Transaction),就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内 的所有SQL都将被取消执行。
2.特点:
一个事务中如果有一个数据库操作失败,那么整个 事务的所有数据库操作都会失败,数据库数据就会 回滚到该事务开始之前的状态。
3.限制 :
MySQL数据库中仅InnoDB和BDB类型的数据库表 支持事务。
二、为什么需要事务
在操作数据的时候,可能遇到多个线程同时操作数据的问题,也可能遇到突然数据库故障了的问题,这些都可能造成数据的不一致。所以事务要保证的就是一致性。
三、事务的ACID原则
![](https://img-blog.csdnimg.cn/img_convert/48ea3ddbdf6e678f61f98d2d32fae372.png)
原子性 :(Atomic )数据库中的 事务执行是作为原 子粒度。不可再 分,整个语句要么 执行,要么不执行 一致性 :(Consist )即在事务开始之前和 事务结束以后,数据 库的完整性约束没有 被破坏。 隔离性 :(Isolated )事务的执行互不 干扰,事务 不可能看到其他事 务运行时,中间某 一时刻的数据。 持久性 :(Durable )事务完成后 ,事务所对数据库所 作的更改便持久保存 在数据库中,不会 被回滚。
四、MySQL实现事务的方法
![](https://img-blog.csdnimg.cn/img_convert/97f66f1ac54fe540f637203e70313589.png)
START TRANSACTION:开始一个事务,标记事务的起始点。
SET AUTOCOMMIT :改变自动提交模式,为0时关闭自动提交模式,为1时开启自动提交模式。默认为1,使用事务时为0。
COMMIT:提交一个事务给数据库。
ROLLBACK:将事务回滚,数据回到本次事务的初始状态。
五、MySQL实现事务的步骤
![](https://img-blog.csdnimg.cn/img_convert/511273a56cd938c0dac2a97648ced768.png)
六、事务的隔离级别
1. READ_UNCOMMITTED 读未提交 2. READ_COMMITTED 读提交(不可重复读) 3. REPEATABLE_READ 可重复读 4. SERIALIZABLE 串行化