在sqlite3中,是否有foreign_key完整性检查?

时间:2013-05-04 14:49:14

标签: sqlite foreign-keys pragma

我只是教自己sqlite,所以当我能够删除父条目时,我很惊讶地发现我的foreign_key约束不起作用。然后我在阅读更多内容后了解到,对于每个会话,默认情况下,foreign_key的pragma是关闭的。似乎奇怪的是,没有资源文件(例如,类似于.exrc的vi),您可以使用它来默认为每个会话设置编译指示,但很好。所以我必须重新编译sqlite3或者每次都设置它。

无论如何,我的问题是,在删除父级之后,有没有办法对外键约束进行帖子完整性检查?即如果你在插入或删除等时打开了pragma,那么告诉sqlite运行它最初运行的逻辑吗?

我看到了一个" pragma integrity_check"但这似乎只是在寻找腐败。

谢谢, 贾斯汀

2 个答案:

答案 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