繁体   English   中英

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

[英]ERROR: violates foreign key constraint, key is not present in parent table (but it is??)

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

我正在为 uni 任务创建一个数据库,通过 pgadmin 4 使用 PostgreSQL,我有一个名为“staff”的表,其中填充了主键为“staffd”的员工。 然后我有另一个名为“client_international”的表,其中包含一个与员工表主键相关的“员工”外键。

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

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

我确信“100000024”键在员工表中......但我仍然收到错误消息。 有什么建议? 下面我将粘贴我用来创建员工表和客户表的代码,以防有人注意到其中的错误。

员工表:

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', 'jenkinsj@k9solutions.co.uk', 'false', '500000001', '100000024');

这是员工表中条目的屏幕截图,显示它肯定在那里:

图片

外键不是“继承的”。

从手册中引用

继承功能的一个严重限制是 [...] 外键约束仅适用于单个表,而不适用于它们的继承子表 在外键约束的引用侧和被引用侧都是如此。

(强调我的)

因此,您正在尝试做的事情根本不受支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM