如果失败,启动事务并提交自动回滚?

时间:2018-04-12 00:27:27

标签: mysql sql

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

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

1 个答案:

答案 0 :(得分:0)

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

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