gpt4 book ai didi

mysql - 如果未达到 COMMIT TRANSACTION 则自动回滚

转载 作者:IT老高 更新时间:2023-10-28 23:59:14 24 4
gpt4 key购买 nike

考虑以下几点:

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;

问题:

我注意到事务自动回滚,记录插入尝试失败。

如果我不提供错误处理程序或错误检查以及 ROLLBACK TRANSACTION 如上所述,它是否安全,因为它似乎在上面的示例中完成了这项工作,因为 COMMIT TRANSACTION 永远不会被执行?

我假设事务会立即回滚并在发生错误时立即丢弃。

最佳答案

不,事务不会在发生错误时立即回滚。但是您可能正在使用应用此策略的客户端应用程序。

例如,如果你使用的是mysql命令行客户端,那么它通常会在出现错误时停止执行并退出。事务正在进行时退出确实会导致事务回滚。

当您编写自己的应用程序时,您可以控制回滚策略,但也有一些异常(exception):

  • 退出(即与数据库断开连接)总是回滚正在进行的事务
  • 死锁或锁等待超时隐式导致回滚

除这些条件外,如果您调用生成错误的命令,错误将正常返回,您可以自由地做任何您喜欢的事情,包括无论如何提交事务。

关于mysql - 如果未达到 COMMIT TRANSACTION 则自动回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6121917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com