0
SQLite語法文檔顯示可以在聲明外鍵時指定「類型名稱」。SQLite FOREIGN KEY鍵入名稱
https://www.sqlite.org/syntax/column-def.html
我一直沒能找到任何地方,它與這是關鍵的「類型」什麼樣的角色是指。當外鍵「type-name」與它引用的值的「type-name」不匹配時會發生什麼?它究竟扮演什麼角色,還是僅僅爲了可讀性?
在此先感謝。
SQLite語法文檔顯示可以在聲明外鍵時指定「類型名稱」。SQLite FOREIGN KEY鍵入名稱
https://www.sqlite.org/syntax/column-def.html
我一直沒能找到任何地方,它與這是關鍵的「類型」什麼樣的角色是指。當外鍵「type-name」與它引用的值的「type-name」不匹配時會發生什麼?它究竟扮演什麼角色,還是僅僅爲了可讀性?
在此先感謝。
外鍵約束定義不包含類型名稱。它可以連接到一列定義,它可以有一個類型名稱,但該類型名稱屬於列本身:如上圖所示
CREATE TABLE Parent (
ID INTEGER PRIMARY KEY,
Name TEXT,
[...]
);
CREATE TABLE Child (
[...],
ParentID INTEGER REFERENCES Parent(ID)
-- column def. -- ---- foreign key ----
);
所有三列有型,但外鍵約束與開始REFERENCES
並且不包含類型。
外鍵約束也可以寫成表約束:
CREATE TABLE Child (
ParentID INTEGER,
[...],
FOREIGN KEY ParentID REFERENCES Parent(ID)
);
這種形式使得它很明顯,沒有爲約束沒有單獨的類型。
總之,SQLite的使用dynamic typing,在大多數情況下,忽略了類型名稱,所以不要緊,你在寫什麼那裏,或者如果您使用的是類型的。
謝謝您的意見。它讓我以更好的視角看待我的問題。 你所提到的,「它可以連接到一個列的定義,它可以有一個類型名稱,但該類型名稱屬於列本身」 你使用: PARENTID INTEGER參考文獻父(ID) 我做不了解INTEGER在此方面的作用。它可以寫爲: ParentID REFERENCES父(ID) 沒有明顯的行爲變化。 爲什麼有人會想要聲明該類型,如果它沒有作用的任何細微的原因?它有一個我無法察覺的目的嗎? –
SQlite實際上使用[affninity]的類型(http://www.sqlite.org/datatype3.html#affinity),但在大多數情況下,該類型只是文檔。 –
謝謝...很棒的信息 –