13

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

无论如何,我的问题是,在我删除父项后,有没有办法对外键约束进行后期完整性检查?即,如果您在插入或删除等时打开了编译指示,只需告诉 sqlite 运行它最初运行时运行的相同逻辑吗?

我看到了一个编译指示integrity_check,但这似乎只是在寻找腐败。

谢谢,贾斯汀

4

2 回答 2

16

从 SQLite 3.7.16 开始,有PRAGMA foreign_key_check

于 2013-05-04T16:21:53.527 回答
10

运行以下命令:

PRAGMA foreign_keys;

结果将是:

0 // foreign keys Disabled
1 // foreign keys Enabled

要启用或禁用外键,请运行:

PRAGMA foreign_keys = ON;

或者

PRAGMA foreign_keys = OFF;

更多信息在这里

于 2017-10-12T15:56:15.790 回答