2013-12-22 7 views
1

Прежде всего, я работаю с DB2.SQL внешний ключ внешнего ключа

Моя проблема:

  • У меня есть таблица A с первичным ключом.
  • Таблица B с 2-мя первичными ключами (один из них является внешний ключ A)
  • Таблица C с первичным ключом
  • приводится таблица D, попавшей первичные ключи B и C

Как создать таблицу D?

Моя первая идея состояла в том, что, но он не работает:

Create Table D(
    A varchar(20) not null references B(A), 
    B varchar(20) not null references B(name of prim key attribute from B), 
    C varchar(20) not null references C, 
    primary key(A,B,C)  
); 

Надеюсь, вы понимаете мою проблему и может помочь мне.

+2

Таблица может только когда-либо ** ONE ** первичный ключ - то, что вы, вероятно, имею в виду ** первичный ключ ** составлен из ** 2 колонки ** –

+0

Или вы имеете в виду, что таблица B имеет две отдельные колонки, каждая из которых уникальна? Может быть, нет необходимости или значимости для объединения их в виде сложного ключа? – WarrenT

ответ

2

Внешние ключи ссылаться на имена столбцов, а не имена ограничений ,

Установленный. , ,

create table A (
    col_a int primary key 
); 

create table B (
    col_a int not null, 
    col_b int not null, 
    primary key (col_a, col_b), 
    foreign key (col_a) references A (col_a) 
); 

create table C (
    col_c int primary key 
); 

И исполнение. , ,

create table D (
    col_a int not null, 
    col_b int not null, 
    col_c int not null, 
    primary key (col_a, col_b, col_c), 
    foreign key (col_a, col_b) references B (col_a, col_b), 
    foreign key (col_c) references C (col_c) 
); 
+0

Спасибо. Это именно то, что я искал =) – user3117357

0

Как отметил Marc_s, в таблице может быть только один первичный ключ, т. Е. В таблице не может быть более одного первичного ключа.

В качестве решения вашей проблемы, вероятно, можно объединить две колонки таблицы B и таблицы C, которые могут совместно действовать в качестве первичного ключа для таблицы D

+0

ok, можете ли вы привести пример, как это могло бы выглядеть? – user3117357

Смежные вопросы