sql >> Database >  >> RDS >> Oracle

Oracle vóór invoegen OF update-triggervoorbeeld

Het volgende is een Oracle BEFORE INSERT OR UPDATE Trigger-voorbeeld om validaties uit te voeren tijdens het invoegen of bijwerken van de records in de EMP-tabel.

Oracle VOORDAT INSERT OF UPDATE Triggervoorbeeld

De onderstaande trigger voert de volgende twee controles uit op de EMP-tabel. (1) Als de records worden ingevoegd, wordt gecontroleerd of de commissiekolom niet hoger is dan 500. (2) Als de gegevens worden bijgewerkt, wordt gecontroleerd of de JOB-kolom niet als nul moet worden ingesteld.

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;

Test boven trigger voor invoegverklaring

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);

Uitvoer

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.

Test boven trigger voor updateverklaring

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

Uitvoer

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.

U kunt deze trigger in uw schema testen door de demotabellen te downloaden via de volgende link Scott Schema-script downloaden.

Zie ook:

  • Hoe gebruik ik globale tijdelijke tabellen in Oracle Procedure?
  • Oracle Trigger met WHEN-clausule Voorbeeld
  • Tabeltype in Oracle-procedurevoorbeeld
  1. Maak een ER-diagram in pgAdmin

  2. PostgreSQL- en C#-gegevenstypen

  3. Er is een verbinding tot stand gebracht met de server, maar er is een fout opgetreden tijdens de pre-login-handshake

  4. Hoe de sortering in MySQL te vinden