7

文档说:

配置“NO ACTION”意味着:当父键被修改或从数据库中删除时,不采取任何特殊操作。

我对这句话的第一个解释是“如果父键被修改或删除,那么这个修改就完成了,没有采取其他行动”,因此没有保持数据库的完整性,这会导致一些混乱。但是我的测试表明,如果我尝试删除父键(如果子键仍然存在),我会得到一个异常(“SQLiteConstraintException:错误代码 19:约束失败”-我正在 android 4.0.3 / SQLite 下测试3.7.x),所以“NO ACTION”似乎表现得如预期。

有人可以解释一下,也许可以举个例子,“NO ACTION”到底是做什么的,它与“RESTRICT”有何不同。

4

1 回答 1

3

引言段说:

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

正常的动作。

此外:

RESTRICT 动作的效果和正常的外键约束强制执行之间的区别在于 RESTRICT 动作处理在字段更新后立即发生 - 不是在当前语句的末尾,因为它会立即约束,或者在末尾与延迟约束一样的当前事务。

NO ACTION如果您使用仅更改一条记录的单语句事务进行测试,您将看不到和之间的任何区别RESTRICT

于 2013-07-11T20:28:37.307 回答