You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未完成DELETE命令即取消脚本,无事务时数据表行将如何变化?

问题场景

以下是一段PHP代码:

<?php
$connection = mysqli_connect("...", "...", "...", "...");

mysqli_query($connection, "DELETE FROM POSTS WHERE USER_ID = 5");

假设上述DELETE命令需要13秒才能删除用户的所有帖子,但用户在6秒后取消了未完成的Delete.php脚本。在未使用MySQL事务的前提下,数据表中的用户帖子行将发生什么变化?


结论

因为未开启事务,且MySQL默认开启**自动提交(AUTOCOMMIT)**模式,单条DELETE语句执行过程中被中断时:

  • 已经完成删除的符合条件的帖子行,会被永久删除,无法恢复
  • 尚未被处理的符合条件的帖子行,会保留在数据表中

简单来说,最终数据表里会剩下一部分该用户的帖子,已经删掉的部分不会因为脚本中断而回滚。这是因为没有事务包裹时,MySQL会把DELETE执行过程中已完成的修改立即持久化,没有回滚的机制。


内容的提问来源于stack exchange,提问作者Taha Sami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:51:54