概念
事务:一组原子性的 SQL 查询,或者说是一个独立的工作单元。
特点:事务内的语句,要么全部执行成功,要么全部执行失败。
开始事务
start transaction; -- 开启事务
select blance from checking where customer_id = 1;
update checking set blance = blance - 200 where customer_id = 1;
update savings set blance = blance + 200 where customer_id = 1;
commit; -- 提交事务(提交所有修改)
rollback; -- 回滚事务(撤销所有修改)
ACID 特性
事务的 ACID 特性能保证数据的安全性,但也会增加系统额外的工作(相比实现 ACID 的数据,需要更多的CPU、内存、磁盘空间)
原子性(atomicity)
一个事务必须被视为一个不可分割的最小工作单元, 整个事务的所有操作要么全部提交成功,要么全部失败回滚。对于事务而言,不可能只执行其中的一部分操作。
一致性(consistency)
数据库总是从一个一致性的状态转换到另外一个一致性的状态。若事务没有提交成功,事务中所做的修改也不会保存到数据库中。
隔离性(isolation)
通常来说,一个事务所做的修改,在未提交之前,对其他事务是不可见的。
“通常来说”:后续涉及有隔离级别(Isolation level),会具体详述。
持久性(durability)
一旦事务提交,所做的修改就会永久保存到数据库中。即使系统崩溃、修改的数据也不会丢失。