SQLite是否支持引用完整性?

9

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

在多对多关系中(带有额外字段),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个回答

16

SQLite默认情况下不强制执行外键约束(主要是为了向后兼容)。

要启用它,您需要执行以下操作

PRAGMA foreign_keys = 1

当您连接到数据库后。

有关PRAGMA foreign_keys的更多详细信息,请参阅手册。


1
还找到了一种在Django中启用它的方法!https://dev59.com/xWw15IYBdhLWcg3wO5OX - mynk
6
比起使用1,稍微更好的写法是PRAGMA foreign_keys=ON - Ron Kalian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接