【问题标题】:integrity constraint in OracleOracle 中的完整性约束
【发布时间】:2012-01-31 19:26:23
【问题描述】:

假设名为SuplProd 的表具有supplierproduct 列以及两个条目:(Sony Ericcson, Xperia)(Apple, iPhone)

我想创建一个名为Orders 的表,其中包含supplierproductquantity 列。

但是,我希望将表 Orders 的组合 (supplier, product) 限制为仅包含来自 SuplProd 的条目。

例如,(Sony Ericcson, Xperia, 1) 条目对Orders 表有效,而(Apple, Xperia, 1) 则无效。

这在 Oracle 中怎么可能?

【问题讨论】:

    标签: database oracle foreign-keys database-integrity


    【解决方案1】:

    您应该在订单表中创建一个外键:

    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)
    )
    

    【讨论】:

    • 如果 SuplProd 已经有一个主键,那么 UNIQUE CONSTRAINT 也可以工作。
    • @a_horse_with_no_name,对!感谢约见。此外,如果 SuplProd 有主键,您可以用 SuplProd 主键字段的副本替换 Orders 表中的供应商、产品。
    猜你喜欢
    • 2012-07-11
    • 1970-01-01
    • 2022-01-16
    • 2012-06-18
    • 2015-04-11
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多