我在将外键列添加到 SQLite 上已经存在的表时遇到了一些麻烦。
这是我的 SQL 代码:
CREATE TABLE IF NOT EXISTS director (
director_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS movie (
movie_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
ALTER TABLE movie ADD COLUMN director_id INTEGER NOT NULL REFERENCES
director(director_id);
这给了我以下错误:
Uncaught Error: Cannot add a NOT NULL column with default value NULL
但是,如果我删除“NOT NULL”约束它运行良好:
ALTER TABLE movie ADD COLUMN director_id INTEGER REFERENCES
director(director_id);
以下也可以正常工作,但我已经有一个现有的表:
CREATE TABLE IF NOT EXISTS director (
director_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS movie (
movie_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
director_id INTEGER NOT NULL,
FOREIGN KEY(director_id) REFERENCES director(director_id)
);
我是否遗漏了某些东西,或者它不能在 SQLite 中制作?