2012-01-02 72 views
0

假設名爲SuplProd的表的列有supplierproduct以及兩個條目:(Sony Ericcson, Xperia)(Apple, iPhone)Oracle中的完整性約束條件

我想創建一個名爲Orders的表,其中列supplier,productquantity

但是,我希望表Orders的組合(supplier, product)限制爲只包含SuplProd的條目。

例如,條目(Sony Ericcson, Xperia, 1)對於表Orders有效,而(Apple, Xperia, 1)則不適用。

在Oracle中這怎麼可能?

回答

3

您應該創建訂單表的外鍵:

create table SuplProd (
    supplier ..., 
    product ..., 
    constraint SuplProd_pk 
    primary key(supplier, product) 
) 

create table Orders 
    ... 
    supplier ..., 
    product ..., 
    qty, 
    constraint SuplProd_pk 
    primary key(...), 
    constraint orders_to_suplprod_fk 
    foreign key (supplier, product) 
    references SuplPRod (supplier, product) 
) 
+0

如果SuplProd已經有一個主鍵,那麼唯一性約束將正常工作。 – 2012-01-02 12:22:51

+0

@a_horse_with_no_name,對!感謝約會。另外,如果SuplProd具有主鍵,則可以使用SuplProd主鍵字段的副本替換訂單表中的供應商,產品。 – danihp 2012-01-02 12:33:01

+0

它的工作原理,謝謝! – niels 2012-01-02 12:47:23