首页  >  文章  >  数据库  >  COMMIT TRANSACTION 遗漏会自动回滚事务吗?

COMMIT TRANSACTION 遗漏会自动回滚事务吗?

Susan Sarandon
Susan Sarandon原创
2024-10-24 15:12:02891浏览

Does COMMIT TRANSACTION Omission Automatically Rollback Transactions?

如果省略 COMMIT TRANSACTION 则自动回滚

在给定的 SQL 语句中:

START TRANSACTION;
BEGIN;
INSERT INTO prp_property1 (module_name,environment_name,NAME,VALUE) VALUES ('','production','','300000');

/** Assume there is syntax error SQL here...**/
Blah blah blah

DELETE FROM prp_property1 WHERE environment_name = 'production';
COMMIT TRANSACTION;

问题是否存在由于语法错误而永远无法到达 COMMIT TRANSACTION 语句,因此事务会自动回滚。

事务回滚行为

与假设相反,事务不会自动回滚遇到错误时回滚。此行为通常在客户端应用程序设置中实现。例如,MySQL 命令行客户端在出现错误时终止执行并退出,这会导致任何正在进行的事务回滚。

在开发自定义应用程序时,开发人员可以控制事务回滚策略。但是,存在某些例外情况:

  • 退出数据库连接总是会回滚正在进行的事务。
  • 死锁或锁等待超时也会隐式触发回滚。

在这些特定场景之外,错误不会自动导致回滚。返回错误,开发人员可以自由决定下一步的操作,包括尽管出现错误仍提交事务。

以上是COMMIT TRANSACTION 遗漏会自动回滚事务吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn