【发布时间】:2014-08-22 19:59:48
【问题描述】:
我需要在我现有的 SQLite 表中添加一个列,该表引用另一个表中的列。我使用命令
ALTER TABLE users
ADD COLUMN dayChoice_id INTEGER
NOT NULL REFERENCES dayChoice(dayChoice_id) DEFAULT 0
我收到错误“无法添加具有非 NULL 默认值的 REFERENCES 列”。真的吗?那我该如何添加列呢?
【问题讨论】:
-
@KonstantinV.Salikhov,这与我遇到的问题正好相反。在他们的情况下,默认值为 NULL。添加带有 NULL 的列没有问题。但我想让它非 NULL,特别是 DEFAULT 0。
-
可能错误是因为参考表-“dayChoice”中的列-“dayChoice_id”为空?
-
dayChoice_id 已定义 - “dayChoice_id INTEGER PRIMARY KEY”。我不认为主键可以为空,对吧?
-
@Dan-Goodspeed:在 SQLite 中,主键可以包含 NULL,除了某些特定情况: 根据 SQL 标准,PRIMARY KEY 应该始终暗示 NOT NULL。不幸的是,由于一些早期版本中的错误,SQLite 并非如此。除非该列是 INTEGER PRIMARY KEY 或该表是 WITHOUT ROWID 表或该列被声明为 NOT NULL,否则 SQLite 允许 PRIMARY KEY 列中包含 NULL 值。(更多详细信息请参见:sqlite.org/lang_createtable.html)