Ошибка присоединения к таблице

Я создал таблицу 1 с составными ключами (столбец 1, столбец 2, столбец 3).

CONSTRAINT table_PK PRIMARY KEY (column1,column2,column3)

Таблица 2 имеет составной ключ (столбец 1, столбец 4).

CONSTRAINT table2_FK FOREIGN KEY (column1)
  REFERENCES table1 (column1)
CONSTRAINT table2_column4_FK FOREIGN KEY (column4)
  REFERENCES table3 (column4)

Однако я не могу соединить таблицу 2 с таблицей 1. Между двумя таблицами единственным столбцом ссылки должен быть только столбец1.

Однако я получаю сообщение об ошибке:

SQL Error: ORA-02270: no matching unique or primary key for this column-list
02270. 00000 -  "no matching unique or primary key for this column-list"
*Cause:    A REFERENCES clause in a CREATE/ALTER TABLE statement
           gives a column-list for which there is no matching unique or primary
           key constraint in the referenced table.
*Action:   Find the correct column names using the ALL_CONS_COLUMNS
           catalog view

Я попытался проверить ограничение, и все кажется правильным.

Когда я попытался использовать интерфейс для создания таблицы, это тоже не сработало.

The number of FK columns (2) does not equal to the number of referenced columns (3)

Из того, что я вижу, они требуют, чтобы у меня было равное количество столбцов, чтобы иметь ссылку на другую таблицу. Однако я не думаю, что это необходимо. Это должно требовать только 1 столбца, верно? Пожалуйста, поправьте меня, если я ошибаюсь.


person user1800566    schedule 07.11.2012    source источник


Ответы (1)


Я считаю, что ваше ограничение внешнего ключа должно ссылаться на все три столбца, которые составляют ваш первичный ключ на table_PK.

Поскольку вы в основном говорите, что каждый первичный ключ определяется как уникальный на основе комбинации значений в каждом из трех столбцов (т.е. каждый tuple), ограничение внешнего ключа должно ссылаться на все три столбца, чтобы определить, какая уникальная запись/кортеж связана с ключом в table_PK.

person Alexander    schedule 07.11.2012
comment
Спасибо. Я понимаю это сейчас. знак равно - person user1800566; 07.11.2012