来自http://www.sqlite.org/lang_conflict.html
ABORT 当发生适用的约束冲突时,ABORT 解析算法会中止当前 SQL 语句并返回 SQLITE_CONSTRAIT 错误并撤销当前 SQL 语句所做的任何更改;但是由同一事务中先前的 SQL 语句引起的更改被保留并且事务保持活动状态。这是默认行为,也是 SQL 标准禁止的行为。
FAIL 当发生适用的约束冲突时,FAIL 解析算法会中止当前的 SQL 语句并返回 SQLITE_CONSTRAINT 错误。但是 FAIL 解决方案不会撤销之前对失败的 SQL 语句的更改,也不会结束事务。例如,如果 UPDATE 语句在尝试更新的第 100 行遇到约束冲突,则前 99 行更改将被保留,但对第 100 行及以后的行的更改永远不会发生。
两者都保留在导致违反约束的语句之前所做的更改并且不结束事务。所以,我想唯一的区别是 FAIL 解决方案不允许进行进一步的更改,而 ABORT 只备份冲突的语句。我做对了吗?