在SQLite数据库浏览器中创建外键

62

抱歉,问题比较基础。

我使用SQLite数据库浏览器创建了我的数据表,但是:

  1. 我不知道如何在应用程序中指定我的外键

  2. 如何在表之间创建关系图?

8个回答

110

我知道这个问题早已被提出,但我找到了答案。它已经内置在GUI中了。您只需拖动并将名称、类型标签变小,以便为外键选项卡腾出空间。将鼠标指针放在末尾处并拖动标题即可。

我使用的SQLite浏览器版本是3.7.0。

输入图片说明


4
谢谢!我使用鼠标扩大了窗口。 - SedJ601
1
然后你需要双击外键字段。 - Dirk
5
在SQLite浏览器中,版本号为3.12.0,在输入"Foreign key clauses..."字段后,您必须在单击"Ok"之前按下键盘上的回车键,否则外键约束将无法保存。 - yerty
似乎对于复合键仍然缺少某些内容,添加约束允许在左侧选择多个列,但没有选项将它们添加到右侧,我错过了什么?FOREIGN KEY("col1", "cols2") REFERENCES "Table2"("col1", "col2") - AlvaroFG

14

前往编辑表定义窗口

单击添加字段

用类型:整数命名

向右滚动并找到外键列

在新行下的外键列中双击

选择主表及其id字段

单击确定

单击写入更改

输入图像描述


13

我无法找到一种使用“数据库结构”选项卡定义外键约束的方法。强烈建议使用脚本定义表定义和约束,而不是使用图形编辑器构建它们-这样可以更轻松地创建新的数据库,并跟踪模式的变化。

以一个例子来说,假设我们有两个表:一个定义文件名,另一个指定用于压缩的方法,在定义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;

有关详细信息,请参阅文档

如果表已经存在且您不想构建完整的脚本,则很遗憾,SQLite不支持在生成表后添加外键,请参见此处:SQLite未实现的SQL功能


8

来自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!
);  

最终,在IT技术方面:
CREATE TABLE track(
  trackid     INTEGER, 
  trackname   TEXT, 
  trackartist INTEGER,
  FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);

在DB Browser for SQLite环境(v 3.8.0 - Sqlite v 3.9.2)中,当您添加track表的数据库字段以及PK、AI和其他列时,您可以找到一个外键列。
在这里,就拿trackartist行举例,只需添加artist(artistid)即可。然后外键约束就被创建了。

3

在DB浏览器中,在“编辑表定义”窗口中,您可以双击外键的空白区域,这样一个文本框就会被激活。您可以在那里添加您的外键。


请添加一张截图。 在一个顶级回答中,它已经附上了,我发现这些列是不可见的。 - CoolMind

1

这很简单,只需要按照以下步骤操作:

进入编辑表定义窗口

右键点击要关联的表(外部表)

选择修改表

在约束选项卡中选择添加约束按钮并选择外键

您可以在此处关联表,然后返回到字段选项卡并进行以下操作

使用类型:整数来命名它

向右滚动并找到外键列

在新行下的外键列中双击

选择主表及其ID字段

单击确定

单击写入更改


1

我不确定这是否完全正确,但这是我所做的:

  • 我在字段选项卡中添加了变量“UserID”,并勾选了“主键”复选框
  • 然后我转到约束选项卡,并在“UserID”上添加了一个外键类型约束
  • 接着我回到字段选项卡,双击打开外键字段,添加该键所在表的名称和变量名称

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接