【发布时间】:2018-04-04 04:16:23
【问题描述】:
我正在开发一个我想使用继承的项目(参见下面的代码)
当我尝试在个人资料中插入内容时出现错误。
ERROR: insert or update on table "profile" violates foreign key
constraint "profile_id_fkey"
DETAIL: Key (id)=(21) is not present in table "test".
我正在使用 PSequel 检查数据库,并且值在父级中可见。但是,我仍然可以在父项中插入重复的主键。然后插入工作。
CREATE TABLE Test (
ID INTEGER NOT NULL,
PRIMARY KEY (ID)
);
CREATE TABLE Testchild (
PRIMARY KEY (ID)
) INHERITS (Test)
;
CREATE TABLE Profile (
ProfileID INTEGER NOT NULL,
ID INT NOT NULL,
PRIMARY KEY (ProfileID)
);
ALTER TABLE Profile
ADD FOREIGN KEY (ID) REFERENCES Test(ID);
INSERT INTO Testchild VALUES (21);
INSERT INTO Profile VALUES (1,21);
【问题讨论】:
-
您的 FK 关系是与 Test 表,而不是与 TestChild。尝试在第一次插入中交换测试表,它会起作用
-
感谢您的帮助!问题是,我从测试中继承了几次。我是否必须与所有孩子建立 FK 关系?
-
关系将从一张表定义 - 一张表的配置文件 - 测试。子表不会继承它。
标签: postgresql