事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
事务案例:
CREATE TABLE accounts (
id INT PRIMARY KEY,
name VARCHAR(50),
balance DECIMAL(10,2)
);
CREATE TABLE transactions (
id INT PRIMARY KEY,
from_account INT,
to_account INT,
amount DECIMAL(10,2),
timestamp DATETIME
);
INSERT INTO accounts (id, name, balance) VALUES
(1, 'Alice', 1000.00),
(2, 'Bob', 500.00);
开启事务
START TRANSACTION;
转账
UPDATE accounts SET balance = balance - 200.00 WHERE id = 1;
UPDATE accounts SET balance = balance + 200.00 WHERE id = 2;
记录转账
INSERT INTO transactions (from_account, to_account, amount, timestamp) VALUES
(1, 2, 200.00, NOW());
提交事务
COMMIT;
在这个例子中,如果在步骤4和步骤5之间出现了错误(比如网络故障或者其他异常),
事务将会被回滚到起始状态,从而保证了账户的一致性。
使用事务可以确保在一组操作中要么全部成功,要么全部失败,
从而保证了数据的完整性。如果有任何一个步骤失败,整个事务将会被回滚,
这样可以避免在中间状态下产生不一致的数据。
- 事务四大特性
- 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
- 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
- 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立 环境下运行。
- 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。 上述就是事务的四大特性,简称ACID。