原子性: 就是一组操作要么同时发生, 要么一个都不发生
一致性(CONSISTENCY): 就是说, 执行完数据库操作后, 数据不会被破坏. 打个比方, 如果a账户转账到b账户, 不可能因为a账户扣了钱, 而b账户没有加钱
隔离性(LSOLATION): 当我们编写了一条update语句, 提交到数据库的一刹那, 有可能别人也提交了一条delete语句到数据库, 也许我们都是对同一条记录进行操作, 可以想象, 如果不稍加控制, 就会出大麻烦来, 我们必须保证数据库操作之间是"隔离"的, 彼此之间没有任何干扰. 这就是隔离性. 但是想要操作之间没有任何干扰是非常难的, 所以就有了事务隔离级别(Transaction Lsolation level)
- READ_UNCOMMITTED
- READ_COMMITTED
- REPEATABLE_READ
- SERIALIZABLE
从上往下, 级别越来越高, 并发行越来越差, 安全性越来越高
当我们执行最后一条insert语句后, 数据库必须要保证有一条数据永久的存放在磁盘中, 这个也算事务的一条特性, 它就是持久性(DURABILITY)
这四条特性, 是事务管理的基石. 原子性是基础, 隔离性是手段, 持久性是目的, 一致性是最重要的. 数据不一致了, 所有的东西都会乱套.