2012-01-02 117 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