2013-05-14 118 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浏览器,在编辑表定义窗口中,您可以双击外键的空白区域和一个文本框将被激活。你可以在那里添加你的外键。

相关问题