答案:mysql事务通过START TRANSACTION、COMMIT和ROLLBACK确保数据一致性,需使用InnoDB引擎。开启事务后执行SQL操作,成功则COMMIT提交,失败则ROLLBACK回滚,常用于转账等场景。

在MySQL中,事务用于确保一组数据库操作要么全部成功,要么全部失败,保证数据的一致性。使用事务的关键是将多个sql语句作为一个逻辑单元来执行。
开启事务
在MySQL中,默认情况下每条SQL语句都是自动提交的(autocommit = 1)。要使用事务,需要先关闭自动提交模式,或者显式地开始一个事务。
– 使用 START TRANSACTION 显式开始一个事务 – 或者设置 SET autocommit = 0 关闭自动提交
示例:
START TRANSACTION;
— 后续的SQL语句将处于同一个事务中
执行SQL操作
在事务开启后,可以执行多条SQL语句,比如INSERT、UPDATE、delete等。这些操作不会立即生效(其他会话看不到),直到你提交事务。
– 执行转账操作:从A账户减钱,向B账户加钱
– 检查余额是否足够
– 更新相关记录
示例:
UPDATE accounts SET balance = balance – 100 WHERE user = ‘Alice’;
UPDATE accounts SET balance = balance + 100 WHERE user = ‘Bob’;
提交或回滚事务
根据操作结果决定是否保存更改。
– 使用 COMMIT 提交事务,使所有更改永久生效
– 使用 ROLLBACK 回滚事务,撤销所有未提交的更改
示例:
COMMIT; — 成功完成,保存更改
— 或者
ROLLBACK; — 出现错误,撤销操作
实际应用场景
常见于银行转账、订单创建、库存扣减等需要保证一致性的场景。
例如转账流程:
– 开启事务
– 检查付款方余额是否充足
– 执行资金划转
– 记录交易日志
– 提交事务(全部成功)或回滚(任一步失败)
注意:只有使用支持事务的存储引擎(如InnoDB)才能使用事务功能。MyISAM不支持事务。
基本上就这些,掌握 START TRANSACTION、COMMIT、ROLLBACK 这三个核心语句就能正确使用MySQL事务了。