2013-05-06 2 views
1

я использую Дерби дб с NetBeans и у меня возникают некоторые проблемы с моими таблицами:SQL Внешний ключ к таблице с составным первичным ключом

Я TABLE_A и TABLE_B и я их создания, как это:

CREATE TABLE TABLE_A 
       (
       FIELD_1 varchar(20), 
       FIELD_2 varchar(50), 
       FIELD_3 varchar(2), 
       PRIMARY KEY(FIELD_1,FIELD_2), 
       ) 

и

CREATE TABLE TABLE_B 
       (
       FIELD_1 varchar(20), 
       FIELD_2 varchar(50), 
       FIELD_3 varchar(20), 
       FIELD_4 varchar(25), 
       PRIMARY KEY(FIELD_3), 
       FOREIGN KEY(???) REFERENCES regioni(FIELD_1,FIELD_2) 
       ) 

вопрос: как я могу связать TABLE_B запись на другой TABLE_A рекорд, когда TABLE_A имеет первичный ключ с 2 полями? Что я должен поставить вместо «???»?

спасибо !!!

+0

Может быть хорошей идеей, чтобы иметь суррогатный ключ для этого – forseta

+0

Если первичный ключ состоит из двух столбцов, то все ваши внешний ключ, ссылающийся это ** ** обязательно использовать все эти столбцы. –

+0

Не должен ли '' ССЫЛКИ regioni (...) 'быть' ССЫЛКИ TABLE_A (...) '? –

ответ

2

Просто используйте все дочерние столбцы, которые соответствуют родительской PK

... 
FOREIGN KEY(FIELD_1,FIELD_2) REFERENCES regioni(FIELD_1,FIELD_2) 
... 
+0

Это сработало, спасибо вам большое :) – smukamuka

1

Попробуйте это,

CONSTRAINT fk_tbl FOREIGN KEY (FIELD_1,FIELD_2) 
        REFERENCES regioni(FIELD_1,FIELD_2) 

Из рамки вопроса, но может дать некоторую информацию, почему именование ограничения важное значение

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