Ошибка с добавлением ограничений внешнего ключа? - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь создать FOREIGN KEY в таблице MAJORS, которая ссылается на главную в таблице MAJOR_DESCRIP.Другими словами, я хочу иметь ограничение, которое не позволяет кому-либо вводить мажор, у которого нет записи в таблице MAJOR _DESCRIP.Я новичок в первичных и внешних ключах, поэтому я не уверен, что именно здесь не так.Ниже я приведу данные таблицы, а также команду, которую я пытаюсь выполнить, и сообщение об ошибке, которое она выдает.Заранее благодарю.

enter image description here

enter image description here

enter image description here

enter image description here

Вот код, который я пытаюсь использовать для достижения этой цели:

ALTER TABLE MAJORS 
ADD CONSTRAINT MAJORS_FK FOREIGN KEY (Major) references MAJOR_DESCRIP(Major);

Ошибка Oracle Apex всплывает- enter image description here

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

Удалить Major Column value из Majors Table, затем добавить foreign key constraint

0 голосов
/ 28 ноября 2018

Справочник по SQL базы данных Oracle 12c содержит следующий оператор:

Ограничение внешнего ключа требует, чтобы значения в одной таблице соответствовали значениям в другой таблице.

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

Решение 1: Добавить данные в MAJOR_DESCRIP

Добавьте 3 строки в таблицу MAJOR_DESCRIP для Economics, Geology и Criminal Justice:

INSERT INTO MAJOR_DESCRIP (MAJOR, DESCRIPTION, YRTTRM) VALUES ('Economics', 'Get rich quick', '201801');
INSERT INTO MAJOR_DESCRIP (MAJOR, DESCRIPTION, YRTTRM) VALUES ('Geology', 'Rocks are fun', '201801');
INSERT INTO MAJOR_DESCRIP (MAJOR, DESCRIPTION, YRTTRM) VALUES ('Criminal Justice', 'Crooks and lawyers', '201801');

COMMIT;

Решение 2. Удалите данные из MAJOR

Удалить строки из MAJOR, которые ссылаются на которые Economics, Geology и Criminal Justice, которые используются STUDENT_ID s 900374912 и 900374913:

DELETE FROM MAJOR
WHERE MAJOR IN ('Economics', 'Geology', 'Criminal Justice');

COMMIT;

Тогда вы сможете добавить ограничение MAJOR_FK.

0 голосов
/ 27 ноября 2018

Проблема здесь может заключаться в том, что в поле MAJOR таблицы MAJORS будут доступны некоторые значения, которые были бы недоступны в поле MAJOR поля MAJOR_DESCRIP таблица.

Таким образом, когда вы пытаетесь установить ограничение, ваше ограничение не становится удовлетворительным, из-за чего вы сталкиваетесь с этой ошибкой.

Наилучшим из возможных решений будет удаление данных из вашего MAJORS таблицы, а затем добавьте ограничение, после чего добавьте правильные данные.

...