Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Przykład wyzwalacza Oracle przed wstawieniem lub aktualizacją

Poniżej znajduje się przykład wyzwalacza Oracle PRZED WSTAWIENIEM LUB AKTUALIZACJĄ do przeprowadzania walidacji podczas wstawiania lub aktualizowania rekordów w tabeli EMP.

Przykład wyzwalacza Oracle PRZED WSTAWIENIEM LUB AKTUALIZACJĄ

Poniższy wyzwalacz wykona następujące dwa sprawdzenia w tabeli EMP. (1) W przypadku wstawiania rekordów sprawdza, czy kolumna prowizji nie jest wyższa niż 500. (2) W przypadku aktualizacji sprawdza, czy kolumna JOB nie powinna być ustawiona jako pusta.

CREATE OR REPLACE TRIGGER TRIG_EMP_BEF_UPD_INS
BEFORE INSERT OR UPDATE
ON EMP
FOR EACH ROW
BEGIN
IF INSERTING
THEN
/* commission should not be greater than 500, for new record*/
IF :new.comm > 500
THEN
raise_application_error (
-20001,
'Commission should not be greater than 500.');
END IF;
ELSIF UPDATING
THEN
/* check for column JOB should not be set as null while update*/
IF :new.job IS NULL
THEN
raise_application_error (-20001, 'Column JOB should have a value.');
END IF;
END IF;
END;

Testuj powyżej wyzwalacza dla instrukcji Insert

Insert into EMP
(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
Values
(7399, 'A.SMITH', 'CLERK', 7902, 
TO_DATE('12/17/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 800, 550, 20);

Wyjście

Error at line 1
ORA-20001: Commission should not be greater than 500.
ORA-06512: at "TRIG_EMP_BEF_UPD_INS", line 6
ORA-04088: error during execution of trigger 'TRIG_EMP_BEF_UPD_INS'
Script Terminated on line 1.

Przetestuj powyżej wyzwalacz dla oświadczenia o aktualizacji

UPDATE EMP
SET sal = 900, job = NULL
WHERE empno = 7499;

Wyjście

Error at line 2
ORA-20001: Column JOB should have a value.
ORA-06512: at "TRIG_EMP_BEF_UPD_INS", line 12
ORA-04088: error during execution of trigger 'TRIG_EMP_BEF_UPD_INS'
Script Terminated on line 2.

Możesz przetestować ten wyzwalacz w swoim schemacie, pobierając tabele demonstracyjne z następującego linku Pobierz skrypt Scott Schema.

Zobacz też:

  • Jak korzystać z globalnych tabel tymczasowych w procedurze Oracle?
  • Przykład wyzwalacza Oracle z klauzulą ​​WHEN
  • Typ tabeli w przykładzie procedury Oracle
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Miej dane wyjściowe PL/SQL w czasie rzeczywistym

  2. java.sql.SQLException:błąd we/wy:reset połączenia na serwerze linux

  3. Dodaj parametr daty do zapytania Oracle

  4. Oracle:Wyszukiwanie pełnotekstowe z warunkiem

  5. Oracle UTL_SMTP:przykład wysyłania poczty z załącznikiem przy użyciu uwierzytelniania portfela Oracle