在约束表中插入记录

时间:2015-11-03 22:05:13

标签: sql postgresql

为什么在尝试将记录添加到PostGres表时会出现错误,以及如何解决此问题:

INSERT INTO common.levels(level_pid, level_name) VALUES(0,'Level1')

表格结构:

CREATE TABLE IF NOT EXISTS common.levels
(
  level_id SERIAL PRIMARY KEY NOT NULL,
  level_pid INTEGER NOT NULL,
  level_name VARCHAR(40) NOT NULL,
  CONSTRAINT FK_MT_Parent FOREIGN KEY (level_pid) REFERENCES common.levels(level_id) ON DELETE CASCADE
);

错误:

Here's the error

1 个答案:

答案 0 :(得分:1)

您创建的FK约束指定level_pid必须已作为此表中的level_id存在。因此,当您插入值' Level1'这不作为表中的level_id存在,因此插入会违反FK约束。我建议创建表,插入所有必需的初始数据,然后插入FK约束。请注意,必须以最终每个level_pid对应于表中的level_id的方式插入数据。

希望这会有所帮助。