我需要在现有的SQLite表中添加一个列,该列引用另一个表中的列。我使用命令
ALTER TABLE users
ADD COLUMN dayChoice_id INTEGER
NOT NULL REFERENCES dayChoice(dayChoice_id) DEFAULT 0
我收到错误“无法添加带有非NULL默认值的REFERENCES列”。真的吗?那么我该如何添加该列呢?
答案 0 :(得分:7)
您需要在执行此ALTER
语句时禁用外键强制执行,如下所示:
PRAGMA foreign_keys = 0;
ALTER TABLE users ADD COLUMN dayChoice_id INTEGER
NOT NULL REFERENCES dayChoice(dayChoice_id) DEFAULT 0;
PRAGMA foreign_keys = 1;
答案 1 :(得分:4)
来自docs:
如果启用了外键约束并且添加了带有REFERENCES子句的列,则该列的默认值必须为NULL。
您提供的默认值不是NULL。
它与其他要求不兼容:
如果指定了NOT NULL约束,则该列必须具有NULL以外的默认值。
您可以通过在ALTER TABLE
之前暂时禁用外键约束来解决此问题。