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行出错,它会提交还是回滚?我希望自动回滚,但我想确定它。
答案 0 :(得分:0)
SQL语句是单独执行的。
当语句失败时,将回滚此单个语句的任何效果,但事务保持打开和活动状态。 当应用程序收到错误代码时,它必须决定是要回滚事务,还是重试,或者做其他事情。
如果您正在使用执行多个SQL语句的函数,则不会发生任何变化;效果与单独执行所有语句直到失败的语句相同。