微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgreSQL 中的外键约束错误

如何解决postgreSQL 中的外键约束错误

我正在创建一个数据库,但我收到一个明显违反外键约束的错误。 我完全不知所措,我试图重新制作数据库

如果我将 productId 更改为 INT 而不是 SERIAL,它会起作用,但我需要自动递增,并且

[GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY]

也不起作用,因为继承的表看不到它是自动生成的,因此无论如何都希望我输入 productId。

我得到的错误代码

[23503] ERROR: insert or update on table "orderspec" violates foreign key constraint "orderspec_productid_fkey"
Detail: Key (productid)=(1) is not present in table "product".

当我运行此代码时发生:

INSERT INTO orderspec(orderno,productid,amount)
VALUES (1,1,50),(1,2,20);

我已经确定表中有匹配的数据,这就是为什么我如此困惑。

我的桌子是这样制作的:

--- ORDER TABLE ---
CREATE TABLE order_
(
    CVR        INT,orderNo    SERIAL,orderDate  DATE,totalPrice DECIMAL(9,2),PRIMARY KEY (orderNo),FOREIGN KEY (CVR) REFERENCES customer (CVR)
);

-- ORDERSPEC TABLE --
CREATE TABLE orderspec
(
    orderNo   INT,productId INT,amount    INT,PRIMARY KEY (orderNo,productId),FOREIGN KEY (orderNo) REFERENCES order_ (orderNo),FOREIGN KEY (productId) REFERENCES product (productId)
);

-- PRODUCT TABLE --
-- "name" is a domain with a VARCHAR(128),no checks.
CREATE TABLE product
(
    productId     SERIAL,productName   name,measurement   VARCHAR,minPurchase   INT,producedBy    name,salesPrice    DECIMAL,bbDate        DATE,amountInStock DECIMAL,tags          VARCHAR,PRIMARY KEY (productId)
);


CREATE TABLE nonAlcoholicBeverage
(
    type VARCHAR,PRIMARY KEY (productId)
) INHERITS (product);

我的数据插入看起来像这样:(这只是虚拟数据)

INSERT INTO customer
VALUES (1,'TEST_CUSTOMER');

INSERT INTO nonAlcoholicBeverage (productName,measurement,minPurchase,producedBy,salesprice,bbDate,amountInStock,tags,type)
VALUES ('Coffee','palle',69,'Moen-Kilback',25,'2020-09-14 07:31:01',704,'kNowledge user','kaffe'),('Orangejuice',78,'Cormier Group',19,'2020-09-18 18:38:21',242,'clear-thinking','most');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。