SQLite3是否不支持外键约束?

我对SQLITE3有问题。


我创建了2个表persons并orders使用以下SQL脚本:


sqlite> create table Persons(

            P_Id int primary key,

            LastName varchar,

            FirstName varchar,

            Address varchar,

            City varchar

        );


sqlite> create table Orders(

            O_Id int NOT NULL,

            OrderNo int NOT NULL,

            P_Id int, 

            PRIMARY KEY (O_Id),

            FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)

        );


sqlite> insert into Orders values(1,77895,3);


sqlite> select * from Orders;


1|77895|3


sqlite>

即使人员表为空,也可以在orders表中插入行。


它没有显示任何错误。


这怎么可能。


守着一只汪
浏览 1105回答 3
3回答

ABOUTYOU

在SQLite 3.x中,每次连接到SQLite数据库时都必须进行以下查询:PRAGMA foreign_keys = ON;否则,SQLite将忽略所有外键约束。为什么每次?根据文档,向后兼容SQLite2.x 。在SQLite 4.x中,默认情况下将启用 FK约束。

青春有我

您阅读文档了吗?在主要页面表示,它与3.6.19版本中引入的。该链接显示了如何使用外键(你的代码是正确的)。您的代码是否提供您省略的任何错误消息?您是否检查了文档中指定的所有前提条件?

交互式爱情

SQLite外键支持sqlite> PRAGMA foreign_keys = ON;这将启用外键约束。
打开App,查看更多内容
随时随地看视频慕课网APP