守著一只汪
2019-12-04 14:48:54
我對(duì)SQLITE3有問(wèn)題。我創(chuàng)建了2個(gè)表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表中插入行。它沒(méi)有顯示任何錯(cuò)誤。這怎么可能。
3 回答

ABOUTYOU
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
在SQLite 3.x中,每次連接到SQLite數(shù)據(jù)庫(kù)時(shí)都必須進(jìn)行以下查詢(xún):
PRAGMA foreign_keys = ON;
否則,SQLite將忽略所有外鍵約束。
為什么每次?根據(jù)文檔,向后兼容SQLite2.x 。
在SQLite 4.x中,默認(rèn)情況下將啟用 FK約束。

青春有我
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
您閱讀文檔了嗎?在主要頁(yè)面表示,它與3.6.19版本中引入的。該鏈接顯示了如何使用外鍵(你的代碼是正確的)。
您的代碼是否提供您省略的任何錯(cuò)誤消息?您是否檢查了文檔中指定的所有前提條件?

交互式愛(ài)情
TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
SQLite外鍵支持
sqlite> PRAGMA foreign_keys = ON;
這將啟用外鍵約束。
添加回答
舉報(bào)
0/150
提交
取消