事务简介
事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,事务在逻辑上是一组操作,要么都执行,要么都不执行,其执行的结果必须使数据库从一种一致性状态到另一种一致性状态。事务有以下ACID四大特性:
- A(Atomicity):原子性,一组操作要么全部成功,要么全部失败,不可能只成功执行一部分操作。
- C(Consistency):一致性,执行后系统总是会从一个一致性的状态转移到另一个一致性的状态,不会存在中间状态。
- I(Isolation):隔离性,通常来说一个事务在完全提交之前,对其它事务来说是不可见的。
- D(Durability):持久性,一旦事务提交,最终状态或结果就确定了,哪怕系统崩溃也不会影响到这个事务的结果。
使用示例
事务的自动提交
默认情况下,MySQL的事务是自动提交(autocommit)的。事务的自动提交是指在执行每个单独的SQL语句后,自动将其视为一个事务并提交。
1、在终端1上连接MySQL数据库并插入数据。

2、在终端2上连接MySQL数据库并查看数据,两边数据一致。

事务的开启
在MySQL中可以使用start transaction语句开启事务,开启事务意味着自动提交功能关闭。
1、在终端1上连接MySQL数据库,开启事务并插入数据。

2、在终端2上连接MySQL数据库并查看数据,因为终端1上插入的数据并未提交,所以终端2无法查看终端1插入的数据。

事务的提交
在MySQL中可以使用commit语句提交事务。
1、在终端1上将事务中插入的数据提交。

2、在终端2上查看数据,因为事务的提交,两边数据一致。

事务的回滚
在MySQL中可以使用rollback语句回滚事务。
1、在终端1上连接MySQL数据库,开启事务并插入数据,然后回滚。

2、在终端2上查看数据,因为终端1的事务回滚,终端2无法查看终端1插入并回滚的数据。
