我只是教自己sqlite,所以当我能够删除父条目时,我很惊讶地发现我的foreign_key约束不起作用。然后我在阅读更多内容后了解到,对于每个会话,默认情况下,foreign_key的pragma是关闭的。似乎奇怪的是,没有资源文件(例如,类似于.exrc的vi),您可以使用它来默认为每个会话设置编译指示,但很好。所以我必须重新编译sqlite3或者每次都设置它。
无论如何,我的问题是,在删除父级之后,有没有办法对外键约束进行帖子完整性检查?即如果你在插入或删除等时打开了pragma,那么告诉sqlite运行它最初运行的逻辑吗?
我看到了一个" pragma integrity_check"但这似乎只是在寻找腐败。
谢谢, 贾斯汀
答案 0 :(得分:9)
从SQLite 3.7.16开始,有PRAGMA foreign_key_check。
答案 1 :(得分:2)
运行以下命令:
PRAGMA foreign_keys;
结果将是:
0 // foreign keys Disabled
1 // foreign keys Enabled
启用或禁用外键运行:
PRAGMA foreign_keys = ON;
或
PRAGMA foreign_keys = OFF;
更多信息Here