数据库以事务为单位进行运行。

    事务具有几个特点:

    • 原子性 Atomic action:事务的操作要么全部不做,要么全部做完,nothing or all。
    • 一致性 Consistency preservation:事务的运行让数据库从一种一致性到达另一种一致性。
    • 隔离性 Isolation:同时运行的事务互相无法感知。
    • 持久性 Durability:只要事务成功完成,对数据库的影响是永久的。

    一言以蔽之,事务的特点就是ACID。

    :::info 例如银行的转账操作就利用了事务机制的原子性。
    image.png
    上图就具体演示了事务是如何做到“资金不足时取消转账”的。在commit之前,数据库时不一致且被锁定的,commit之后,数据库锁被解除。 :::

    在没有显式地指定事务地情况下,每一条SQL语句就作为一个事务,也就是以语句为单位运行。