2012-01-02 4 views
0

Supposons qu'une table nommée SuplProd comporte les colonnes supplier et product et deux entrées: (Sony Ericcson, Xperia) et (Apple, iPhone). Je voudrais créer une table nommée Orders avec les colonnes supplier, product et quantity.contrainte d'intégrité dans Oracle

Cependant, j'aimerais que la combinaison (supplier, product) de la table Orders soit limitée pour ne contenir que des entrées de SuplProd.

Par exemple, l'entrée (Sony Ericcson, Xperia, 1) serait valide pour la table Orders alors que (Apple, Xperia, 1) ne le serait pas.

Comment cela est-il possible dans Oracle?

Répondre

3

Vous devez créer une clé étrangère dans le tableau des commandes:

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

Si SuplProd dispose déjà d'une clé primaire, une contrainte unique fonctionnerait aussi bien. –

+0

@a_horse_with_no_name, à droite! merci pour votre rendez-vous. De plus, si SuplProd a une clé primaire, vous pouvez remplacer le fournisseur, le produit dans la table Commandes par une copie des champs de clé primaire SuplProd. – danihp

+0

Cela fonctionne, merci! – niels

Questions connexes