Могу ли я узнать, как будет написан триггер, если, скажем, есть кандидат, должность, отношения приложений и заявки, это как класс ассоциации, поскольку кандидат может подавать заявки на многие должности, а должность может применяться многими кандидатами, а отношение заявок имеет свой собственный атрибут dateApp, и я хочу ограничить количество приложений до двух раз в день, так что это означает, что клиент может применять только 2 элемента за один день. Пока у меня есть этот код:
CREATE OR REPLACE TRIGGER APPLYTWICEONLY
AFTER INSERT ON APPLIES
DECLARE
CURSOR C IS
SELECT ANUMBER, COUNT(APPDATE) AS TOTAL
FROM APPLIES
WHERE APPDATE = TRUNC(SYSDATE)
GROUP BY ANUMBER;
BEGIN
FOR APPLY IN C
LOOP
IF APPLY.TOTAL > 2 THEN
DBMS_OUTPUT.PUT_LINE('AN APPLICANT CAN APPLY MAXIMUM TWICE A DAY.');
ROLLBACK;
END IF;
END LOOP;
END;
/
, так что здесь происходит следующее: после того, как кандидат подает заявку на должность, я проверяю общее количество заявок, поданных сегодня для каждого кандидата, используя номер, если общее количество количество заявок превышает 2 для кандидата сегодня, тогда я откатываюсь и отменяю эту вставку. Я хочу сделать это с помощью триггера оператора вместо триггера строки, но я продолжаю получать ORA-04092: невозможно выполнить ОТКАТ в триггере после того, как кандидат превысил количество заявок за день. Кто-нибудь может мне помочь?