Вам необходимо использовать два внешних ключа:
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
, а затем ссылаются на представление материала во внешнем ключе, а не на базовые таблицы, но этот способ представляется слишком запутанным для решения проблемы.Вместо этого вам следует отказаться от требования использовать только один внешний ключ, когда ожидаемое решение - использовать два.