该文件说:
配置“ NO ACTION”仅意味着:当修改或删除数据库中的父键时,不会采取任何特殊操作。
我对这句话的第一个解释是“如果父键被修改或删除,那么就完成了此修改,并且没有采取其他措施”,因此无法保持数据库的完整性,这会引起一些混乱。但是我的测试表明,如果我尝试删除父键(如果子键仍然存在),则会收到异常(“ SQLiteConstraintException:错误代码19:约束失败”)-我正在android 4.0.3 / SQLite下进行测试3.7.x),因此“无操作”的行为似乎与预期的一样。
有人可以解释一下,也许可以举个例子,“ NO ACTION”到底做什么,与“ RESTRICT”有什么不同。
介绍段说:
如果未明确指定操作,则默认为“NO ACTION”。
这是正常动作。
此外:
RESTRICT 操作与正常外键约束强制执行的效果之间的区别在于,RESTRICT 操作处理在字段更新后立即发生 - 不是像立即约束那样在当前语句的末尾,或者在末尾当前事务的情况与具有延迟约束的情况一样。
如果您正在使用仅更改一条记录的单语句事务进行测试,则您不会看到NO ACTION和之间有任何差异RESTRICT。
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |