我有下表:
CREATE TABLE child( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT);
如何添加外键约束parent_id?假设启用了外键。
parent_id
大多数示例假设您正在创建表 - 我想将约束添加到现有的表中。
你不能。
尽管向表中添加外键的 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
ADD CONSTRAINT
ALTER TABLE
因此,在 sqlite 3.6.1 中添加外键的唯一方法是CREATE TABLE如下:
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)