Я пытаюсь создать триггер, который проверяет, находится ли преподаватель, который будет добавлен в назначенную таблицу, уже в квалифицированной таблице для указанного класса. Возможно, это утомительный метод. Тем не менее, я все еще хотел бы знать, что я делаю неправильно. Ниже приведен мой код с созданными созданными таблицами и триггером, являющимся последней частью кода:
CODE:
CREATE TABLE Faculty (
FId varchar(10),
FName varchar(20),
CONSTRAINT Faculty_ID_pk PRIMARY KEY(FId)
);
CREATE TABLE Course (
CId varchar(10),
CName varchar(20),
CONSTRAINT Course_ID_pk PRIMARY KEY(CId)
);
CREATE TABLE Qualify (
QDate DATE,
FId varchar(10),
CId varchar(10),
CONSTRAINT Qualifying_date CHECK(QDate >= TO_DATE('2020-08-24', 'YYYY-MM-DD')),
CONSTRAINT Qualify_FID_fk FOREIGN KEY(FId) REFERENCES Faculty(FId),
CONSTRAINT Qualify_CID_fk FOREIGN KEY(CId) REFERENCES Course(CId)
);
CREATE TABLE Assign (
ADate DATE,
FId varchar(10),
CId varchar(10),
CONSTRAINT Qualifying_check CHECK(ADate > TO_DATE('2020-08-24', 'YYYY-MM-DD')),
CONSTRAINT Assign_FID_fk FOREIGN KEY(FId) REFERENCES Faculty(FId),
CONSTRAINT Assign_CID_fk FOREIGN KEY(CId) REFERENCES Course(CId)
);
CREATE OR REPLACE TRIGGER Check_If_Qualified
BEFORE INSERT ON Assign
FOR EACH ROW
DECLARE
v_facNum number;
BEGIN
SELECT f.FId
into v_facNum
from Faculty f
where f.facnum = :new.fid;
END;
Однако я получаю сообщение об ошибке:
Ошибка в строке 7: PLS-00225: ссылка на подпрограмму или курсор 'F' выходит за рамки
номер v_facNum; НАЧАТЬ ВЫБРАТЬ f.FId в v_facNum с факультета f
Делает Кто-нибудь знает, что может быть не так?