Эй, ребята, у меня есть проблема, которую я просто не могу решить.
Мне нужно создать триггер строки, чтобы при вставке нового приложения заявитель не мог подать заявку на ту же позицию в течение 30 дней с даты последней заявки на эту позицию.
вот мой код: я думаю, что я на правильном пути, но я просто не могу связать все это вместе. Вставленная дата должна отключить триггер.
CREATE OR REPLACE TRIGGER applicant_date
AFTER INSERT ON APPLIES
FOR EACH ROW
DECLARE applydate applies.appdate%TYPE;
BEGIN
SELECT appdate INTO applydate
FROM applies
where anumber=:New.anumber
and pnumber=:New.pnumber;
IF :New.appdate - applydate < 30 THEN
RAISE_APPLICATION_ERROR(-20001,
'Applicantion within 30 days of last
application.');
END IF;
END;
/
INSERT INTO APPLIES(anumber, pnumber, appdate)
VALUES(000004, 00000007, '13-JAN-2000');
Также меня просят ввести бинды, и я просто недостаточно опытен, чтобы все понять правильно. Независимо от того, что я вкладываю, я получаю:
PLS-00487: недопустимая ссылка на переменную 'SQLDEVBIND1Z_2'
Вот таблицы, в которых это помогает:
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, appdate ),
CONSTRAINT APPLIES_fkey1 FOREIGN KEY ( anumber )
REFERENCES APPLICANT ( anumber )
ON DELETE CASCADE,
CONSTRAINT APPLIES_fkey2 FOREIGN KEY ( pnumber )
REFERENCES POSITION ( pnumber )
ON DELETE CASCADE);
INSERT INTO APPLIES VALUES( 000001, 00000001, TO_DATE('13-DEC-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000002, 00000001, TO_DATE('13-DEC-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000003, 00000002, TO_DATE('14-NOV-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000004, 00000002, TO_DATE('20-JAN-2000','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000005, 00000002, TO_DATE('22-JAN-2000','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000005, 00000003, TO_DATE('09-MAY-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000006, 00000003, TO_DATE('17-JUN-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000007, 00000003, TO_DATE('18-JUN-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000007, 00000004, TO_DATE('13-APR-2000','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000008, 00000004, TO_DATE('13-APR-2000','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000009, 00000004, TO_DATE('14-APR-2000','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000010, 00000005, TO_DATE('23-SEP-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000001, 00000006, TO_DATE('26-OCT-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000002, 00000006, TO_DATE('27-OCT-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000003, 00000006, TO_DATE('28-OCT-1999','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000004, 00000007, TO_DATE('01-JAN-2000','DD-
MON-YYYY') ); /*row i am trying to trigger*/
INSERT INTO APPLIES VALUES( 000005, 00000007, TO_DATE('03-JAN-2000','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000006, 00000007, TO_DATE('04-JAN-2000','DD-
MON-YYYY') );
INSERT INTO APPLIES VALUES( 000007, 00000007, TO_DATE('07-JAN-2000','DD-
MON-YYYY') );
Заранее большое спасибо, высоко ценится.