Wie kann man das Oracle trigger verursacht Rekursion Problem

Ich weiß nicht, ob ich klar genug mit meiner Frage. Ich habe eine Datenbank für ein transport-Unternehmen, das speichert das Datum und die Zeit aller Reisen, die ich bin versucht zu verhindern, dass jemand von der Reservierung eines Tickets eine Stunde vor der planmäßigen Abflugzeit oder ein ticket kaufen, nach der Abreise, Datum und Zeit.
Ich habe versucht, erstellen Sie einen trigger für diese, aber für einige Grund es mir nicht erlauben, erstellen Sie ein ticket, wenn es im Einklang mit den zeitlichen Anforderungen. Es gibt mir eine Fehlermeldung

ERROR at line 1:
ORA-00036: maximum number of recursive SQL levels (50) exceeded
ORA-00036: maximum number of recursive SQL levels (50) exceeded

Hier ist der code für meine trigger:

CREATE OR REPLACE TRIGGER validHour
BEFORE INSERT OR UPDATE
ON ticket
FOR EACH ROW
DECLARE x number;
BEGIN
select EXTRACT(DAY FROM (departure - sysdate)) * 1440 + EXTRACT(HOUR FROM (departure - sysdate)) * 60 + EXTRACT(MINUTE FROM (departure - sysdate)) 
into x
from trip
where trip.tripid=:new.tripid;

IF :new.status = 'Reserved' AND x<= 59 THEN
    raise_application_error(-20000,'You can only reserve an hour before departure');
ELSIF :new.status = 'Purchased' AND x<= 0 THEN  
    raise_application_error(-20000,'You can only purchase before departure');
ELSE
    INSERT INTO ticket(name, lastname, status, reservationid, cardnumber, tripid, seatnum)
    VALUES(:new.name, :new.lastname, :new.status, :new.reservationid, :new.cardnumber, :new.tripid, :new.seatnum);
END IF;

END;
/

Wenn Sie erstellen einen trigger für diese ist nicht der richtige Weg, wie könnte ich sonst tun?

  • Sollte Ihr before-insert-trigger werden Berufung einlegen?
  • select (departure - sysdate) * 60 * 24 from trip geben Sie einen Betrag von Minuten zwischen diesen Terminen, keine Notwendigkeit zu extract
  • Ich wusste nicht, dass! Ich kämpfte so sehr, immer diese Wert, und ich wünschte, ich wusste, es war so einfach. Danke für die info!
InformationsquelleAutor Edna Ramirez | 2013-05-06
Schreibe einen Kommentar