MySQL启动事务的命令主要是START TRANSACTION
。这个命令用于标记事务的起始点,在此之后的SQL语句将被包含在一个事务中,直到使用COMMIT
或ROLLBACK
命令结束事务。
事务是一组一起执行或都不执行的SQL语句,它是一个不可分割的工作单位。事务具有ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
ROLLBACK
命令撤销所有已完成的操作,从而恢复数据库到事务开始前的状态。MySQL支持多种事务隔离级别,包括读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。不同的隔离级别提供了不同的并发性和数据一致性保证。
事务广泛应用于需要确保数据一致性和完整性的场景,如银行转账、订单处理、库存管理等。
innodb_lock_wait_timeout
参数以增加事务等待锁定的时间。以下是一个简单的MySQL事务示例,演示了如何使用START TRANSACTION
、COMMIT
和ROLLBACK
命令:
START TRANSACTION;
-- 执行SQL语句
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
-- 提交事务
COMMIT;
如果在事务执行过程中发生错误,可以使用ROLLBACK
命令撤销所有更改:
START TRANSACTION;
-- 执行SQL语句
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 3; -- 假设id=3的账户不存在
-- 发生错误,回滚事务
ROLLBACK;
更多关于MySQL事务的信息和最佳实践,可以参考MySQL官方文档或相关教程。