Android SQLite';s";“不采取行动”;外键约束do及其与“;限制;?

Android SQLite';s";“不采取行动”;外键约束do及其与“;限制;?,android,sqlite,Android,Sqlite,报告说: 配置“无操作”意味着:当修改父密钥时 或从数据库中删除,则不采取特殊操作 我对这句话的第一个解释是“如果修改或删除了父键,那么就进行了修改,而不采取任何其他操作”,因此不能保持数据库的完整性,这会导致一些错误。 但我的测试表明,如果我尝试删除父键(如果子键仍然存在),我确实会得到一个异常(“SQLiteConstraintException:错误代码19:constraint failed”-我在android 4.0.3/SQLite 3.7.x下进行测试),因此“无操作”似乎表现出

报告说:

配置“无操作”意味着:当修改父密钥时 或从数据库中删除,则不采取特殊操作

我对这句话的第一个解释是“如果修改或删除了父键,那么就进行了修改,而不采取任何其他操作”,因此不能保持数据库的完整性,这会导致一些错误。 但我的测试表明,如果我尝试删除父键(如果子键仍然存在),我确实会得到一个异常(“SQLiteConstraintException:错误代码19:constraint failed”-我在android 4.0.3/SQLite 3.7.x下进行测试),因此“无操作”似乎表现出预期的行为


请有人解释一下,或者举个例子,“不采取行动”到底有什么作用,以及它与“限制”有何不同

如果未明确指定操作,则默认为“无操作”

这是正常的行为

此外:

限制操作的效果与普通外键约束强制之间的区别在于,字段一更新,限制操作处理即会发生,而不是在当前语句的末尾,因为它与即时约束一样,或者在当前事务结束时使用延迟约束


如果您使用只更改一条记录的单语句事务进行测试,您将看不到
NO ACTION
RESTRICT

RESTRICT的SQLite文档中提到了“正常外键约束强制”。这是指“不采取行动”吗?好的,谢谢你的澄清,这样你就可以阅读
限制行动和不采取行动的效果之间的区别是,一旦字段更新,限制行动的处理就会发生-不是[稍后]
但是,是不是只有我认为“不采取行动”文档的措辞是误导吗?所以这意味着数据库的完整性得到了保护?我们永远不能在保留子行的同时删除父行?@BugsHappen这是另一个问题。这可以用回答。实际上,除了一个表外,我希望所有表都打开外键。有没有办法做到这一点?