Ich muss Trigger in PL/SQL schreiben. Ich möchte, dass die Einfügung verhindert wird, wenn die Bedingung wahr ist.PL/SQL-Trigger zum Einfügen zu verhindern
CREATE OR REPLACE TRIGGER SafeRent AFTER INSERT ON Rent
FOR EACH ROW
DECLARE
BEGIN
IF :NEW.id_status IN (1,2) THEN
DELETE FROM Rent WHERE id_rent = :NEW.id_rent;
END IF;
END;
Explonation zu dem Code: Wenn id_status gleich 1 oder 2 ist, möchte ich Einfügen nicht getan werden.
Dies ist der Auslöser, den ich geschrieben habe. Es löscht (ich vermute, ich habe es nicht getestet) den Datensatz nach dem Einfügen, wenn die Bedingung wahr ist.
Gibt es eine Möglichkeit, es vor dem Einfügen zu verhindern?
Ich dachte über steigende Ausnahme in 'vor dem Einführen' Typ Trigger, ist es eine gute Lösung?
PS: Es muss Trigger sein, ich weiß, dass es als Check Constraints implementiert werden kann.
du hast Recht mit dem Raise_application, nur ein Nebenbei bemerkt, können Sie es mit vor Feuer, oder nach dem Einsatz. Funktioniert in beiden Richtungen. –
Woher hast du '-20343'? –
@ Matthew Das ist ein Beispiel Fehlercode. Dieser Artikel zeigt weitere Informationen dazu: https://docs.oracle.com/cloud/latest/db112/LNPLS/errors.htm#LNPLS99960, unter dem Abschnitt 'RAISE_APPLICATION_ERROR Procedure'. Ich habe es zu etwas weniger Random bearbeitet. :-) – Tenzin