小编典典

如何向现有 SQLite 表添加外键?

all

我有下表:

CREATE TABLE child( 
  id INTEGER PRIMARY KEY, 
  parent_id INTEGER, 
  description TEXT);

如何添加外键约束parent_id?假设启用了外键。

大多数示例假设您正在创建表 - 我想将约束添加到现有的表中。


阅读 99

收藏
2022-09-02

共1个答案

小编典典

你不能。

尽管向表中添加外键的 SQL-92 语法如下:

ALTER TABLE child ADD CONSTRAINT fk_child_parent
                  FOREIGN KEY (parent_id) 
                  REFERENCES parent(id);

SQLite 不支持 该命令的ADD CONSTRAINT变体( sqlite.org:SQLite 不实现的 SQL
功能)。ALTER TABLE

因此,在 sqlite 3.6.1 中添加外键的唯一方法是CREATE TABLE如下:

CREATE TABLE child ( 
    id           INTEGER PRIMARY KEY, 
    parent_id    INTEGER, 
    description  TEXT,
    FOREIGN KEY (parent_id) REFERENCES parent(id)
);

不幸的是,您必须将现有数据保存到临时表中,删除旧表,使用 FK 约束创建新表,然后将数据从临时表中复制回来。(sqlite.org -
常见问题解答:Q11)

2022-09-02