我有下表:

雖然我的 items 表有該item_code列,但我可以item_code為不同的store_id.
我確實想檢查item_code我的items表中存在的資料庫級別,但是在嘗試這樣做時,我收到以下錯誤:
[42830] ERROR: there is no unique constraint matching given keys for referenced table "items".
事實上,它不是獨一無二的,我也無法讓它獨一無二。
在這種情況下我可以做些什么來支持對 item_code 的外鍵檢查?
uj5u.com熱心網友回復:
在您的情況下,這不完全是外鍵。我建議您使用check約束來確保表中item_code存在items,無論在哪個商店。由于您不能直接執行此操作(檢查條件中不允許使用子查詢),因此您需要一個簡單的輔助函式。
create function item_code_exists(ic bigint) returns boolean as
$$
select exists (select from items where item_code = ic);
$$ language sql;
然后在另一個表 DDL 中使用列定義,如下所示:
item_ref bigint check (item_code_exists(item_ref))
uj5u.com熱心網友回復:
您首先必須在 的列上創建一個UNIQUEorPRIMARY KEY約束。外鍵必須參考唯一或主鍵約束。item_codeitems
每個表都應該有一個主鍵!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331676.html
標籤:PostgreSQL
上一篇:JBDI-吃掉部分SQL陳述句
