Z
ZHANK
编程在线教程SQL 教程事务与数据安全
数据操作

事务与数据安全

理解事务 ACID、BEGIN/COMMIT/ROLLBACK、并发控制

事务与数据安全

转账时 A 扣钱 B 加钱——如果中间系统崩溃了怎么办?事务保证这两步要么全做要么全不做。

学完本章你将: 理解 ACID、BEGIN/COMMIT/ROLLBACK。


什么是事务

事务是一组不可分割的操作。要么全部执行成功,要么全部撤销——就像没发生过一样。

sql
-- 转账:A 扣 100,B 加 100
BEGIN;                                          -- 开始事务
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;                                         -- 提交
-- 如果中间出错,ROLLBACK 撤销

ACID 四个特性

特性含义
Atomic 原子性要么全成功,要么全失败
Consistent 一致性事务前后数据状态合法
Isolated 隔离性并发事务互不干扰
Durable 持久性提交后数据永久保存

回滚

sql
BEGIN;
DELETE FROM users WHERE id = 1;
SELECT * FROM users WHERE id = 1;  -- 确认已删
ROLLBACK;                           -- 还是不要删了,恢复!
SELECT * FROM users WHERE id = 1;  -- 数据回来了

⚠️ SQLite 默认每条 SQL 自动提交。使用 BEGIN...COMMIT 把多条包在一个事务里。