SQLite 是不是支持参照完整性?

Posted

技术标签:

【中文标题】SQLite 是不是支持参照完整性?【英文标题】:Does SQLite support referential integrity?SQLite 是否支持参照完整性? 【发布时间】:2013-06-17 07:10:23 【问题描述】:

我有一个配置为使用 SQLite 的 Django 网络服务器。

在多对多关系(带有额外字段)中,Django 强制我使用关系模型来建立两个对象之间的关系。但我能够在相关表中尚不存在的对象之间创建关系。

例如:

I have table1 and table2 which are related via table12.
In table1, there is just one object called A.
In table2, there is just one object called X.
I can create a record in table12 that depict a relationship between A & Y; even though Y doesn't exist in table2.

我的关系模型已经适当地标记了外键。

【问题讨论】:

【参考方案1】:

默认情况下,SQLite 不强制执行foreign key constraints(主要是为了向后兼容)。

要启用它,您必须执行

PRAGMA foreign_keys = 1

连接到数据库之后。

详情请参阅PRAGMA foreign_keys 的手册。

【讨论】:

还找到了在 Django 中启用它的方法! ***.com/questions/6745763/… 一个更好的变体是PRAGMA foreign_keys=ON而不是1

以上是关于SQLite 是不是支持参照完整性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RedShift 中强制执行参照完整性?

MariaDB Galera 集群参照完整性约束

如何克服 Netezza 缺乏唯一约束/参照完整性执行的问题?

SQL 中的参照完整性完整性检查

不需要参照完整性的Django ForeignKey?

完整性,模式,建表,建索引