如何解决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 举报,一经查实,本站将立刻删除。