Oracle - наличие внешних ключей в нескольких таблицах - PullRequest
4 голосов
/ 14 января 2010

Я не уверен, что можно это сделать, но мне нужно иметь ссылку на внешний ключ в 2 таблицах.

Table1 has 2 columns (A PK, B)
Table2 has 2 columns (C PK, D)

Таблица 3 имеет 3 столбца (A PK, B PK, E) и состоит из первых двух таблиц.

Я надеюсь сделать что-то вроде следующего:

create table Table3     
(
  A Varchar2 (4),   
  C Varchar2 (10),  
  E Char (1),
    constraint PK_A_C primary key (A, C),
    CONSTRAINT FK_A_C
   FOREIGN KEY (A, C) 
   REFERENCES (Table1.A, Table2.B)
);

Я надеюсь, что это имеет какой-то смысл.

Спасибо

Джеймс

Ответы [ 2 ]

4 голосов
/ 14 января 2010

Данное ограничение внешнего ключа описывает отношение между одной дочерней таблицей и одной родительской таблицей.

Однако вы можете иметь два ограничения внешнего ключа, каждое из которых указывает на соответствующую таблицу:

create table Table3     
(
  A Varchar2 (4),   
  C Varchar2 (10),  
  E Char (1),
    constraint PK_A_C primary key (A, C),
    CONSTRAINT FK_A
     FOREIGN KEY (A) 
     REFERENCES Table1(A),
    CONSTRAINT FK_B
     FOREIGN KEY (C) 
     REFERENCES Table2(B)
);
3 голосов
/ 14 января 2010

Использование:

CONSTRAINT fk_a FOREIGN KEY (a) REFERENCES TABLE1(a)
CONSTRAINT fk_b FOREIGN KEY (c) REFERENCES TABLE2(b)

Справка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...