【问题标题】:Start transaction and commit auto rollback if failure? [duplicate]如果失败,启动事务并提交自动回滚? [复制]
【发布时间】:2018-09-21 23:54:59
【问题描述】:

我想知道如果任何插入/更新发生错误,以下sql语句是否会在开始事务之前自动回滚到状态。或者我是否需要在开始事务之前手动回滚到初始状态?如果需要手动回滚,应该怎么做?

START TRANSACTION;
INSERT INTO TABLE 1 ...
UPDATE TABLE 1 ...
UPDATE TABLE 2 ...
INSERT TABLE 3 ...
COMMIT;

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您可以使用ROLLBACK; 回滚 MySQL 事务。自动回滚取决于您使用的客户端。如果您使用的是 MySql 命令行客户端,它会在发生错误时触发退出,这将回滚任何待处理的事务。但是,某些客户端可能不会在返回错误时自动触发回滚,让您按照您认为合适的方式处理错误。您可以在official documentation 上查看有关事务如何工作的更多信息,包括它们的各种选项和细微差别。

    编辑:使用this other question 中的答案中的信息更新了有关自动回滚的答案。

    【讨论】:

    • 错了,如果发生未捕获的错误,事务会自动回滚。
    • 已修复并提供了更新信息的来源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 2013-05-14
    • 2019-02-10
    相关资源
    最近更新 更多