【发布时间】:2020-07-08 13:54:03
【问题描述】:
我有一个表,它有两个键,主键和外键同时也从另一个表引用。
CREATE TABLE public."restaurantProduct"
(
"restaurantId" bigint NOT NULL,
"productId" bigint NOT NULL,
CONSTRAINT "restaurantProduct_pkey" PRIMARY KEY ("restaurantId", "productId"),
CONSTRAINT "restaurantProduct_productId_fkey" FOREIGN KEY ("productId")
REFERENCES public.products ("productId") MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT "restaurantProduct_restaurantId_fkey" FOREIGN KEY ("restaurantId")
REFERENCES public.restaurant ("restaurantId") MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT
)
现在我想创建另一个名为 custOrders 的表并使用 restaurantProduct.restaurantId 作为外键,但它给了我一个错误 错误:没有唯一约束匹配给定键的引用 talbe "restaurantProduct" 当我已经将restaurantProduct.restaurantId 分配为主键时。也无法将UNIQUE 添加到restaurantProduct.restaurantId,因为餐厅可以有多种产品。我可以重新设计数据库,但我只是想知道是否有任何方法可以单独使用这个设计?
【问题讨论】:
-
外键必须包含引用主键中的所有列。
-
@a_horse_with_no_name 所以你的意思是我必须将
restaurantProduct.productId作为我的custOrders表的外键包含在内?