MySQL 事务是一种机制,可以保证一组 MySQL 语句要么全部执行,要么完全不执行。这样可以防止数据库发生不一致的状态。
事务由以下三个特征组成:
- 原子性:事务中的所有操作要么全部执行,要么全部不执行。
- 一致性:事务执行前和执行后,数据库的完整性没有被破坏。
- 隔离性:事务的执行不会被其他事务的操作干扰。
- 持久性:一旦事务被提交,它对数据库的改变就是永久性的。
MySQL 使用 BEGIN、COMMIT 和 ROLLBACK 语句来管理事务。
BEGIN 开始事务,COMMIT 提交事务,ROLLBACK 回滚事务。
例如:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE account_number = 12345;
UPDATE accounts SET balance = balance + 100 WHERE account_number = 67890;
COMMIT;
这样,如果两个 UPDATE 语句都执行成功,那么就会提交事务,完成转账操作。如果其中有一个 UPDATE 语句执行失败,那么就会回滚事务,数据库回到事务开始之前的状态。