【问题标题】:Create a foreign key in SQLite database browser在 SQLite 数据库浏览器中创建外键
【发布时间】:2021-07-18 13:41:53
【问题描述】:

对不起,新手问题。

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

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

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

【问题讨论】:

    标签: sqlite


    【解决方案1】:

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

    我的 SQLite 浏览器版本是 3.7.0。

    【讨论】:

    • 谢谢!我用鼠标展开了窗口。
    • 然后你必须双击外键字段。
    • 你是天才!神一样的救命恩人!
    • 太棒了!我永远不会想到。
    • 在 SQLite 浏览器中是版本 3.12.0 在输入“外键子句...”字段后,您必须在单击“确定”之前按键盘上的回车键,否则将不会保存外键约束.
    【解决方案2】:

    我找不到使用“数据库结构”选项卡定义外键约束的方法。我强烈建议使用脚本来定义表定义和约束,而不是使用图形编辑器来构建它们——它使创建新数据库和跟踪架构更改变得更加容易。

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

    【讨论】:

      【解决方案3】:

      进入编辑表定义窗口

      点击添加字段

      使用类型命名它:整数

      向右滚动并找到外键列

      在新行的外键列下双击

      选择主表及其id字段

      点击确定

      单击写入更改

      【讨论】:

        【解决方案4】:

        来自 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) 的 DB 浏览器中,当您添加 track 表的 DB 字段以及 PK ,AI 等列可以找到外键列。

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 请添加截图。在附加的最佳答案中,我发现这些列不可见。
          【解决方案6】:

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

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

          选择修改表

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

          使用类型命名它:整数

          向右滚动并找到外键列

          在新行的外键列下双击

          选择主表及其id字段

          点击确定

          单击写入更改

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2022-01-17
                • 1970-01-01
                • 2015-11-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-03-13
                • 1970-01-01
                相关资源
                最近更新 更多