这里有关于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行出现错误,它会提交还是回滚?我希望能够自动回滚,但是我想对此有所确定。
SQL语句是单独执行的。
当一条语句失败时,该单个语句的所有影响都会回滚,但是事务保持打开状态并处于活动状态。当应用程序收到错误代码时,它必须决定是否要回滚该事务,重试或执行其他操作。
如果您使用的是执行多个SQL语句的函数,则不会发生任何变化。效果与您执行所有语句直到失败的语句相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句