【问题标题】:How to add a foreign key for a table that is already created?如何为已经创建的表添加外键?
【发布时间】:2019-12-12 12:48:24
【问题描述】:

我已将一个表添加到名为 settings 的数据库中。该表有一个名为 id(整数)的列,它是 pirmary 键。我还在一个名为会话的表中添加了一个名为 settingsID 的列。我想要做的是在 settingsID 中添加一个引用主键的外键。

我不想创建一个新表,因为它已经创建了。我要做的就是从会话表中的 settingsID 中的设置表中引用 id。

ALTER TABLE Sessions ADD FOREIGN KEY (_SettingsID) REFERENCES settings (id)

这是我的错误:

“FOREIGN”附近:语法错误

有人能告诉我处理这个问题的正确方法吗?

【问题讨论】:

    标签: sql sqlite foreign-keys


    【解决方案1】:

    简短的回答:你不能。

    这被记录为SQL Features That SQLite Does Not Implement 的一部分:

    仅支持ALTER TABLE 命令的RENAME TABLEADD COLUMNRENAME COLUMN 变体。其他类型的ALTER TABLE 操作,如DROP COLUMNALTER COLUMNADD CONSTRAINT 等被省略。

    大胆强调是我的。

    所以基本上你需要在创建表的时候创建约束。对于您的用例,一种解决方案是:

    • 创建一个新表(使用外键约束)
    • 从旧表中复制数据
    • 删除旧表(或者更好的是,重命名它,这样你就有了备份)
    • 重命名新表

    【讨论】:

    • 所以我必须创建一个新表?为了建立这种关系?
    • 感谢您抽出宝贵时间提供答案。
    猜你喜欢
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2017-04-20
    • 2011-04-21
    相关资源
    最近更新 更多