2012-01-02 1 views
0

Предположим, что таблица с именем SuplProd имеет столбцы supplier и product и две записи: (Sony Ericcson, Xperia) и (Apple, iPhone).Ограничение целостности в Oracle

Я хотел бы создать таблицу под названием Orders с колонками supplier, product и quantity.

Однако, мне бы хотелось, чтобы комбинация (supplier, product) таблицы Orders была ограничена только для записей от 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 уже имеет первичный ключ, то UNIQUE CONSTRAINT будет работать, как хорошо. –

+0

@a_horse_with_no_name, правильно! спасибо о назначении. Кроме того, если SuplProd имеет первичный ключ, вы можете заменить поставщика, продукт в таблице Orders копией первичных ключей SuplProd. – danihp

+0

Он работает, спасибо! – niels