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

ROLLBACK用于撤销事务中未提交的更改,确保数据一致性;2. 需使用InnoDB等支持事务的存储引擎;3. 通过START TRANSACTION或BEGIN关闭自动提交以开启事务;4. 执行sql操作后,可用ROLLBACK回滚至事务前状态,或用COMMIT永久保存更改;5. 典型应用如银行转账,出错时回滚避免数据异常。

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

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操作将全部失效,数据恢复到事务开始前的状态。

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

如知AI笔记

如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型

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

查看详情 如何在mysql中使用ROLLBACK回滚事务

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

 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。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇
text=ZqhQzanResources