【发布时间】:2021-12-30 15:35:12
【问题描述】:
我有这张桌子:
DROP TABLE IF EXISTS mission CASCADE;
CREATE TABLE mission
(
id_mission SERIAL PRIMARY KEY,
task_description VARCHAR(255) NOT NULL
);
一个任务可以依赖另一个任务来解锁。所以我有下一个反身表:
DROP TABLE IF EXISTS depends CASCADE;
CREATE TABLE depends
(
id_mission_1 INTEGER,
id_mission_2 INTEGER, -- it can be null (optional)
FOREIGN KEY (id_mission_1) REFERENCES mission (id_mission),
FOREIGN KEY (id_mission_2) REFERENCES mission (id_mission),
PRIMARY KEY (id_mission_1, id_mission_2)
);
我正在像这样从另一个表中导入数据:
INSERT INTO depends(id_mission_1, id_mission_2)
SELECT quest_id, quest_depends
FROM player_quest;
player_quest 表如下所示:
我们可以看到并不是所有的任务都相互依赖,所以可以有空值。
我收到以下错误:
错误:关系“depends”的“id_mission_2”列中的空值违反了非空约束
失败的行包含 (14, null)。
我该如何解决这个问题?
数据库:PostgreSQL
【问题讨论】:
-
主键列永远不能为空。
标签: sql postgresql