SQL 事务属性
在数据库管理系统中,事务(Transaction)是一组逻辑操作单元,这些操作要么全部成功执行,要么全部失败回滚。事务的四大属性(ACID)是确保数据库操作可靠性和完整性的关键。本文将详细介绍SQL事务的四大属性,并通过实际案例帮助你理解这些概念。
什么是SQL事务属性?
SQL事务属性是指事务在数据库管理系统中必须具备的四个特性,通常简称为ACID:
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
这些属性确保了即使在系统故障或并发操作的情况下,数据库也能保持一致性和可靠性。
1. 原子性(Atomicity)
原子性是指事务中的所有操作要么全部成功执行,要么全部失败回滚。事务被视为一个不可分割的最小工作单元。
示例
假设我们有一个银行转账的事务,从账户A向账户B转账100元。这个事务包含两个操作:
- 从账户A扣除100元。
- 向账户B增加100元。
如果其中一个操作失败,整个事务必须回滚,确保账户A和账户B的余额保持一致。
BEGIN TRANSACTION;
UPDATE Accounts SET balance = balance - 100 WHERE account_id = 'A';
UPDATE Accounts SET balance = balance + 100 WHERE account_id = 'B';
COMMIT;
如果第二个操作失败,事务将回滚,账户A的余额不会减少。
2. 一致性(Consistency)
一致性确保事务 将数据库从一个一致状态转换到另一个一致状态。事务执行前后,数据库必须满足所有的完整性约束。
示例
继续上面的银行转账示例,假设账户A的余额不能为负数。如果在事务执行过程中,账户A的余额变为负数,事务将回滚,确保数据库的一致性。
BEGIN TRANSACTION;
UPDATE Accounts SET balance = balance - 100 WHERE account_id = 'A';
-- 假设账户A的余额为50,执行后余额为-50,违反了约束
UPDATE Accounts SET balance = balance + 100 WHERE account_id = 'B';
ROLLBACK;
由于账户A的余额不能为负数,事务将回滚,数据库保持一致状态。