puk*_*puk 2 sql postgresql inheritance
我试图通过继承来简化我的代码。这是我现在拥有的
DROP SCHEMA PUBLIC CASCADE;
CREATE SCHEMA PUBLIC;
CREATE TABLE student(
id SERIAL PRIMARY KEY,
age INT
);
CREATE TABLE engineer(
id SERIAL PRIMARY KEY,
studentId INT REFERENCES student (id),
friend INT REFERENCES student (id)
);
CREATE TABLE artist(
id SERIAL PRIMARY KEY,
studentId INT REFERENCES student (id),
friend INT REFERENCES student (id)
);
INSERT INTO student (age) VALUES (20); --Trying to remove this
INSERT INTO student (age) VALUES (21); --Trying to remove this
INSERT INTO engineer (studentId) VALUES (1);
INSERT INTO artist (studentId,friend) VALUES (2,1);
Run Code Online (Sandbox Code Playgroud)
我不想输入这两行,因此,我使用下面的行
DROP SCHEMA PUBLIC CASCADE;
CREATE SCHEMA PUBLIC;
CREATE TABLE student(
studentId SERIAL PRIMARY KEY,
age INT
);
CREATE TABLE engineer(
id SERIAL PRIMARY KEY,
friend INT REFERENCES student (studentId)
) INHERITS (student);
CREATE TABLE artist(
id SERIAL PRIMARY KEY,
friend INT REFERENCES student (studentId)
) INHERITS (student);
INSERT INTO engineer (id,age) VALUES (DEFAULT,20);
INSERT INTO artist (id,age,friend) VALUES (DEFAULT,20,1);
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误。
psql:test.psql:45: ERROR: insert or update on table "artist"
violates foreign key constraint "artist_friend_fkey"
DETAIL: Key (friend)=(1) is not present in table "student".
Run Code Online (Sandbox Code Playgroud)
这是添加到长长的 Postgres 问题列表的另一个限制吗?