如何在mysql中使用ROLLBACK回滚事务

来源:这里教程网 时间:2026-02-28 20:18:44 作者:

在MySQL中使用

ROLLBACK
回滚事务,是为了撤销在一个事务中执行的所有未提交的更改。这在发生错误或需要取消操作时非常有用。要正确使用
ROLLBACK
,必须确保表使用支持事务的存储引擎,比如InnoDB。

启用事务

MySQL默认处于自动提交模式(autocommit = 1),这意味着每条SQL语句都会被立即提交。要使用事务,必须先关闭自动提交:

START TRANSACTION; —— 显式开始一个事务 或使用 BEGIN; (效果相同)

例如:

START TRANSACTION;

执行SQL操作

在事务开启后,执行的INSERT、UPDATE或DELETE等操作不会立即生效,而是暂存于当前事务中。

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

假设第二个更新出错或业务逻辑判断需要取消转账,就可以回滚。

使用ROLLBACK回滚

调用

ROLLBACK;
语句可撤销自事务开始以来所有未提交的更改:

ROLLBACK;

执行后,上述两条UPDATE操作将全部失效,数据恢复到事务开始前的状态。

如果确认操作无误,则应使用:

COMMIT;

将更改永久保存。

实际应用场景示例

模拟银行转账:

START TRANSACTION;
<p>UPDATE accounts SET balance = balance - 500 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 500 WHERE user_id = 2;</p><p>-- 假设发现用户2账户异常,取消操作
ROLLBACK;</p><p>-- 此时两条更新都被撤销</p>

如果不执行

ROLLBACK
而执行
COMMIT
,更改才会真正写入数据库。

基本上就这些。只要记得开启事务、出错时回滚、正确时提交,就能有效控制数据一致性。注意MyISAM引擎不支持事务,务必使用InnoDB。

相关推荐