У меня есть таблица, которая выглядит какTrigger/Constraint ограничить вставки или обновления
MyTable (
Student ID,
Exam)
Я хочу, чтобы поместить триггер/ограничение, которое описывает:
Студент ID может появиться много раз и не должны быть уникальными. Однако пара (идентификатор студента, «французский») может появляться только один раз. Поэтому каждый студент может иметь только одну «французскую» запись. Французский зашиты
ID Exam 0001 German 0001 History 0001 French 0001 French <-- This insert should fail.
Attemting обновить «Немецкий» поле Французский должен также не
До сих пор я пытался
CREATE OR REPLACE TRIGGER MyTrigger BEFORE INSERT OR UPDATE ON MyTable
FOR EACH ROW
DECLARE
rowsCount INTEGER;
BEGIN
select count(*)
INTO rowsCount
from MyTable sc
where SC.SC_TYPE = 'FRENCH' and :new.StudentID = sc.StudentID;
IF rowsCount > 1
THEN
raise_application_error('-20098','You cannot have more than one French record per student.');
END IF;
end;
Это бросает мутировать ошибку, хотя. Во всяком случае, это связано с целостностью, поэтому я уверен, что ограничение будет лучше, но будет признателен за некоторые советы о том, как это сделать.
Таким образом, ограничение на 'French' специфично, и им должно быть разрешено иметь несколько строк с' German'? –