我有一個參照表,說OrderType
收集不同類型的訂單:如何爲表的行的子集創建外鍵約束?
CREATE TABLE IF NOT EXISTS OrderType (name VARCHAR);
ALTER TABLE OrderType ADD PRIMARY KEY (name);
INSERT INTO OrderType(name) VALUES('sale-order-type-1');
INSERT INTO OrderType(name) VALUES('sale-order-type-2');
INSERT INTO OrderType(name) VALUES('buy-order-type-1');
INSERT INTO OrderType(name) VALUES('buy-order-type-2');
我希望建立從另一個表FK約束,說SaleInformation
,指向該表(OrderType
)。但是,我想表達的是,並非所有行OrderType
都符合該FK的目的(它只應該是與銷售相關的訂單類型)。
我想到只用正確的行(圖SaleOrderType
)的創建表OrderType
的景色,加上FK約束這一觀點,但PostgreSQL的不太願意與:
ERROR: referenced relation "SaleOrderType" is not a table
如此看來我無法爲視圖創建FK約束(爲什麼?)。我只剩下創建冗餘表來保存與銷售相關的訂單類型的選項嗎?另一種方法是簡單地讓FK指向原始表格,但是我並沒有嚴格按照我的意願表達約束條件。
如何讓OrderType結構如下:id_order_type爲serial(pk),order_type爲字符變化,type_不同的order_type字符:從SaleInformation引用id_order_type? – Houari
編輯您的問題,並將CREATE TABLE語句粘貼到OrderType中。 –