Oracle - Trigger check-Einschränkung vor einfügen
ich würde gern einen einfachen trigger zu überprüfen, die eine gespeicherte Variablen aus einer Tabelle.
wenn die variable den Wert '1' ist, dann genehmigen das einfügen
sonst, wenn die variable den Wert " 2 " ist, dann prompt Fehlermeldung.
CREATE OR REPLACE TRIGGER approval
BEFORE INSERT ON VIP
REFERENCING OLD AS MEMBER
FOR EACH ROW
DECLARE
CONDITION_CHECK NUMBER;
BEGIN
SELECT CONDITION INTO CONDITION_CHECK FROM MEMBER;
IF CONDITION_CHECK = '2' THEN
RAISE_APPLICATION_ERROR (-20000, ' UPGRADE DENIED!');
END IF;
END;
Aber dieser trigger deaktivieren Sie alle Einträge, selbst wenn die Bedingung den Wert '1' ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
AFTER
Trigger Bedingungen prüfen: die Werte können geändert werden durch andereBEFORE
löst. InAFTER
auslöst, werden Sie garantiert, dass der Wert nicht nachträglich geändert werden.Es scheint, Sie sind fehlt eine Bedingung in den
SELECT
(wenn, wie ich glaube, Sie versuchen, den Wert aus einer anderen Tabelle):Können Sie verweisen Sie einfach auf die
:new.condition
in Ihr auslösenEs würde jedoch wenig Sinn machen, diese Art von Logik in einem auslösen. Es würde weit mehr Sinn, zu definieren, eine
CHECK
- Einschränkung für die Spalte, die dafür sorgt, dass diecondition
ist eine zulässige Werte.Sind Sie auf den alten Daten, anstatt die neue - vermutlich ist das nicht was Sie soll?