在 MySQL 中,事务(Transaction)是一组 SQL 语句,它们被当作一个单独的工作单元来执行。事务具有四个基本属性,通常被称为 ACID 属性:

1. 原子性(Atomicity): 事务是一个原子操作,要么全部执行,要么全部不执行。如果事务中的任何一部分操作失败,整个事务都会被回滚,数据库保持原始状态。

2. 一致性(Consistency): 事务执行后,数据库必须处于一致的状态。这意味着事务必须将数据库从一种一致状态转变为另一种一致状态。

3. 隔离性(Isolation): 事务的执行应该是相互隔离的,一个事务的执行不应该受其他事务的影响。事务应该像在独立环境中执行一样,不会受到其他并发事务的影响。

4. 持久性(Durability): 一旦事务被提交,其结果应该是永久性的,即使在系统崩溃之后也应该保持。

在 MySQL 中,你可以使用 START TRANSACTION 开始一个新的事务,使用 COMMIT 提交事务,使用 ROLLBACK 回滚事务。以下是一个简单的事务示例:
-- 开始事务
START TRANSACTION;

-- SQL 语句 1
UPDATE account SET balance = balance - 100 WHERE user_id = 1;

-- SQL 语句 2
UPDATE account SET balance = balance + 100 WHERE user_id = 2;

-- 提交事务
COMMIT;

在上述示例中,两个 SQL 语句组成一个事务。如果其中一个 SQL 语句执行失败,整个事务将被回滚,数据库保持原始状态。

注意,在默认情况下,MySQL 是自动提交模式的,也就是说,每个语句都被视为一个单独的事务并自动提交。要使用显式事务,你需要禁用自动提交:
-- 禁用自动提交
SET AUTOCOMMIT = 0;

-- 开始事务
START TRANSACTION;

-- SQL 语句 1
UPDATE account SET balance = balance - 100 WHERE user_id = 1;

-- SQL 语句 2
UPDATE account SET balance = balance + 100 WHERE user_id = 2;

-- 提交事务
COMMIT;

-- 恢复自动提交
SET AUTOCOMMIT = 1;

在实际应用中,事务用于确保数据库操作的一致性和可靠性,特别是在需要执行多个相关操作时。


转载请注明出处:http://www.zyzy.cn/article/detail/14100/MySQL