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

时间:2013-05-14 07:13:05

标签: android-sqlite sqlite

抱歉新手问题。

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

  1. 我不知道如何使用该应用程序指定外键

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

8 个答案:

答案 0 :(得分:57)

我知道很久以前就已经问过这个问题,但我找到了。它内置于GUI中。您只需拖动并使那些名称,类型选项卡稍微小一点,以便为外键选项卡腾出空间。将鼠标指针放在末尾并拖动标题。

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

enter image description here

答案 1 :(得分: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;

documentation

中的更多详细信息

如果表已经存在并且您不想构建完整的脚本,那么您运气不好,SQLite不支持在生成表后添加外键,请参见此处:SQL Features That SQLite Does Not Implement

答案 2 :(得分: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)
);

在SQLite环境的数据库浏览器(v 3.8.0 - Sqlite v 3.9.2)中添加track表的数据库字段以及 您可以在PK,AI和其他列中找到外键列。

在那里,对于此示例,您只需在artist(artistid)行中添加trackartist 然后创建外键约束。

答案 3 :(得分:2)

在数据库浏览器的“编辑表定义”窗口中,您可以双击外键的空白区域,并激活一个文本框。您可以在那里添加外键。

答案 4 :(得分:1)

真的很简单,就这样做 进入编辑表定义窗口

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

选择修改表

在约束选项卡上选择添加约束按钮并选择外键 您可以在此处关联表格,然后返回字段选项卡并执行

用类型命名它:整数

向右滚动并找到外键列

在新行的外键列下双击

选择主表及其id字段

点击确定

点击写入更改

答案 5 :(得分:0)

SQLite3中的触发器强制执行外键约束。链接https://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers可以帮助您解决第一个问题。

答案 6 :(得分:0)

转到编辑表定义窗口

点击添加字段

用类型命名:整数

向右滚动并找到外键列

双击新行中“外键”列下的

选择主表及其ID字段

点击确定

点击写入更改

enter image description here

答案 7 :(得分:0)

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

  • 我在字段选项卡中添加了变量“UserID”并选中了“主键”框
  • 我转到约束选项卡并在“用户ID”上添加了外键类型约束
  • 然后我回到字段选项卡并双击外键字段,该字段打开并添加了该键所在的表的名称以及该表的名称变量