Я пытаюсь реализовать триггер уровня выписки, чтобы применить следующее «Заявитель не может подать заявку более чем на две позиции за один день».
Я могу применить его с помощью триггера уровня строки (какпоказано ниже), но я понятия не имею, как это сделать, используя триггер уровня оператора, когда я не могу использовать: NEW или: OLD.
Я знаю, что есть альтернативы использованию триггера, но я готовлюсь к экзамену с таким же вопросом, поэтому буду признателен за любую помощь.
CREATE TABLE APPLIES(
anumber NUMBER(6) NOT NULL, /* applicant number */
pnumber NUMBER(8) NOT NULL, /* position number */
appDate DATE NOT NULL, /* application date*/
CONSTRAINT APPLIES_pkey PRIMARY KEY(anumber, pnumber)
);
CREATE OR REPLACE TRIGGER app_trigger
BEFORE INSERT ON APPLIES
FOR EACH ROW
DECLARE
counter NUMBER;
BEGIN
SELECT COUNT(*) INTO counter
FROM APPLIES
WHERE anumber = :NEW.anumber
AND to_char(appDate, 'DD-MON-YYYY') = to_char(:NEW.appDate, 'DD-MON-YYYY');
IF counter = 2 THEN
RAISE_APPLICATION_ERROR(-20001, 'error msg');
END IF;
END;