如果语句失败,SQLite会自动回滚吗?

时间:2015-02-05 16:57:05

标签: sqlite

sqlite:https://www.sqlite.org/lang_transaction.html有这个文档,它没有说明我遇到的情况会发生什么:

BEGIN;
INSERT INTO a (x, y) VALUES (0, 0);
INSERT INTO b (x, y) VALUES (1, 2); -- line 3 error here, b doesn't have column x
COMMIT;

在这种情况下会发生什么?如果第3行出错,它会提交还是回滚?我希望自动回滚,但我想确定它。

1 个答案:

答案 0 :(得分:0)

SQL语句是单独执行的。

当语句失败时,将回滚此单个语句的任何效果,但事务保持打开和活动状态。 当应用程序收到错误代码时,它必须决定是要回滚事务,还是重试,或者做其他事情。

如果您正在使用执行多个SQL语句的函数,则不会发生任何变化;效果与单独执行所有语句直到失败的语句相同。