为了账号安全,请及时绑定邮箱和手机立即绑定

SQLite3是否不支持外键约束?

SQLite3是否不支持外键约束?

守着一只汪 2019-12-04 14:48:54
我对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|3sqlite>即使人员表为空,也可以在orders表中插入行。它没有显示任何错误。这怎么可能。
查看完整描述

3 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

在SQLite 3.x中,每次连接到SQLite数据库时都必须进行以下查询:


PRAGMA foreign_keys = ON;

否则,SQLite将忽略所有外键约束。


为什么每次?根据文档,向后兼容SQLite2.x 。


在SQLite 4.x中,默认情况下将启用 FK约束。


查看完整回答
反对 回复 2019-12-04
?
青春有我

TA贡献1784条经验 获得超8个赞

您阅读文档了吗?在主要页面表示,它与3.6.19版本中引入的。该链接显示了如何使用外键(你的代码是正确的)。


您的代码是否提供您省略的任何错误消息?您是否检查了文档中指定的所有前提条件?


查看完整回答
反对 回复 2019-12-04
?
交互式爱情

TA贡献1712条经验 获得超3个赞

SQLite外键支持


sqlite> PRAGMA foreign_keys = ON;

这将启用外键约束。


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 1014 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信