Объявление ограничения внешнего ключа для двух внешних ключей из двух разных таблиц - PullRequest
0 голосов
/ 31 мая 2019

Я хочу объявить ограничение "fk" для двух внешних ключей student_id и subject_id из двух разных таблиц student и subject соответственно.

Я уже попробовал следующее, но оно не работает

ограничение fk внешний ключ (subject_id) и внешний ключ (student_id) ссылаются на субъект (subject_id) и student (student_id)

Я не могу использовать два ограничения, поэтому я сталкиваюсь с этой проблемой.Это должно быть "FK".

1 Ответ

2 голосов
/ 31 мая 2019

Вам необходимо использовать два внешних ключа:

MySQL / Oracle Setup :

CREATE TABLE student ( student_id INT PRIMARY KEY );
CREATE TABLE subject ( subject_id INT PRIMARY KEY );

Создать таблицу :

CREATE TABLE your_table2 (
  subject_id INT,
  student_id INT,
  CONSTRAINT your_table2__subject_id__fk FOREIGN KEY ( subject_id ) REFERENCES subject ( subject_id ),
  CONSTRAINT your_table2__student_if__fk FOREIGN KEY ( student_id ) REFERENCES student ( student_id )
)

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

CREATE TABLE your_table (
  subject_id INT CONSTRAINT your_table__subject_id__fk REFERENCES subject ( subject_id ),
  student_id INT CONSTRAINT your_table__student_if__fk REFERENCES student ( student_id )
)

Я хочу объявить ограничение "fk" для двух внешних ключей student_id и subject_id из двух разных таблиц student иsubject соответственно.

Нельзя объявить одно ограничение внешнего ключа, которое ссылается на две таблицы;синтаксис требует, чтобы вы ссылались только на одну таблицу.

Полагаю, в Oracle вы можете создать материализованное представление для перекрестного соединения двух таблиц, на которые вы хотите сослаться, и создать составной первичный ключ на *Столбцы 1022 * и subject_id, а затем ссылаются на представление материала во внешнем ключе, а не на базовые таблицы, но этот способ представляется слишком запутанным для решения проблемы.Вместо этого вам следует отказаться от требования использовать только один внешний ключ, когда ожидаемое решение - использовать два.

...