错误:违反外键约束,父表中不存在键(但它是?)

问题描述 投票:0回答:1

我知道这个问题已经问过很多遍了,但是没有一个答案能解决我的问题。

我正在通过pgadmin 4使用PostgreSQL创建一个用于uni分配的数据库,并且我有一个名为“ staff”的表,该表中填充了具有“ staffid”主键的工作人员。然后,我还有另一个名为“ client_international”的表,其中包括与职员表主键相关的“ staffid”外键。

[尝试插入到客户表中时,出现以下错误:

错误:对表“ client_international”的插入或更新违反了外键约束“ intclient_staff_fkey”详细信息:表“ staff”中不存在键(staffid)=(100000024)。SQL状态:23503

我确定'100000024'键在人员表中。但是我仍然收到错误。有什么建议么?在下面,我将粘贴用于创建人员表和客户表的代码,以防万一有人注意到它们中的错误。

Staff表格:

CREATE SEQUENCE staff_seq
    start 100000000
    increment 1;

CREATE TABLE staff 
(
    staffid integer default nextval('staff_seq'),
    firstname varchar(20) NOT NULL,
    lastname varchar(20) NOT NULL,
    "position" varchar(20) NOT NULL,
    mobile varchar(20) NOT NULL,
    email varchar(100) NOT NULL,
    "location" integer NOT NULL,
    CONSTRAINT staff_pkey PRIMARY KEY (staffid)
);

客户表:

CREATE SEQUENCE client_seq
    start 200000000
    increment 1;

CREATE TABLE client  
(
    clientid integer default nextval('client_seq'),
    company varchar(100) NOT NULL,
    sector varchar(100) NOT NULL,
    pointofcontact varchar(20) NOT NULL,
    mobile varchar(20) NOT NULL,
    email varchar(100) NOT NULL,
    approvalstatus boolean default (false),
    "location" integer NOT NULL,
    staffid integer NOT NULL,
    CONSTRAINT client_pkey PRIMARY KEY (clientid)
);

CREATE TABLE client_international 
(
    CONSTRAINT client_international_pkey PRIMARY KEY (clientid)
) INHERITS ("client");

ALTER TABLE client
ADD CONSTRAINT client_location_fkey FOREIGN KEY ("location") REFERENCES "location" (locationid),
ADD CONSTRAINT client_staff_fkey FOREIGN KEY (staffid) REFERENCES staff (staffid);

ALTER TABLE client_international
ADD CONSTRAINT intclient_location_fkey FOREIGN KEY ("location") REFERENCES "location" (locationid),
ADD CONSTRAINT intclient_staff_fkey FOREIGN KEY (staffid) REFERENCES staff (staffid);

运行以下语句时收到错误:

INSERT INTO client_international(company, sector, pointofcontact, mobile, email, approvalstatus, "location", staffid)
VALUES  ('Moores Dogs', 'Border Patrol', 'Carol Moore', '07911 653453', '[email protected]', 'false', '500000001', '100000024');

这里是人员表中条目的屏幕截图,显示该条目肯定在其中:

Image

sql postgresql pgadmin
1个回答
0
投票

不是“继承”外键。

Quote from the manual

继承功能的严重限制是外键约束仅适用于单个表,不适用于其继承子级。在外键约束的引用端和被引用端均是如此。

(我的重点)

因此,您尝试执行的操作完全不受支持。

© www.soinside.com 2019 - 2024. All rights reserved.