2013-05-14 117 views

回答

12

我找不到使用「數據庫結構」選項卡定義外鍵約束的方法。我強烈建議使用腳本定義表格定義和約束,而不是使用圖形編輯器來構建表格定義和約束 - 這使得創建新數據庫和追蹤模式更改變得更加容易。通過一個例子,假設我們有兩個表:一個定義文件名,一個定義用於壓縮的方法,我們可以在定義它時向file_definition表添加外鍵約束。

CREATE TABLE [compression_state] (
    [compression_state_id] INTEGER PRIMARY KEY NOT NULL, 
    [value] TEXT NOT NULL 
); 

CREATE TABLE [file_definition] (
    [file_id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
    [compression_state_id] INTEGER NOT NULL, 
    [name] TEXT NOT NULL, 
    FOREIGN KEY(compression_state_id) REFERENCES compression_state(compression_state_id) 
); 

然而,在默認情況下,SQLite的也不會強制約束,所以每次連接到數據庫時,您必須發出以下命令啓用約束檢查。

PRAGMA foreign_keys = ON; 

documentation的更多詳細信息。

如果已經存在的表,你不希望建立一個完整的腳本,那麼你的運氣了,一旦產生表SQLite不支持添加外鍵,在這裏看到:SQL Features That SQLite Does Not Implement

6

晚答案也許有幫助別人

從SQLite的文檔: CREATE TABLE artist( artistid INTEGER PRIMARY KEY, artistname TEXT ); CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER -- Must map to an artist.artistid! );
並在年底CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER, FOREIGN KEY(trackartist) REFERENCES artist(artistid) );

在DB瀏覽器SQLite的環境(v 3.8.0 - sqlite的v 3.9.2)當您添加D B字段爲跟蹤表以及 的PK,AI等列可以找到一個外鍵列。
在那裏,對於本示例,您只需在trackartist行中添加藝術家(artistid)
然後創建外鍵約束。

25

我知道這個問題很久以前就被問過了,但我找到了。它內置於GUI中。您只需拖動並使這些名稱,類型選項卡稍微小一些,以便爲「外鍵」選項卡留出空間。將鼠標指針放在最後並拖動標題。

我的版本的SQLite瀏覽器是版本3.7.0。

enter image description here

0

在DB瀏覽器,在編輯表定義窗口中,您可以雙擊外鍵的空白區域和一個文本框將被激活。你可以在那裏添加你的外鍵。

相關問題