sql >> Database teknologi >  >> RDS >> Oracle

Oracle Before Insert OR Update Trigger Eksempel

Følgende er et eksempel på Oracle FØR INSERT ELLER OPDATERING Trigger for at udføre valideringer under indsættelse eller opdatering af posterne i EMP-tabellen.

Oracle FØR INDSÆT ELLER OPDATERING Triggereksempel

Nedenstående trigger vil udføre de følgende to kontroller på EMP-tabellen. (1) Hvis posterne indsættes, vil den kontrollere, om kommissionskolonnen ikke er højere end 500. (2) Hvis den opdateres, vil den kontrollere, at JOB-kolonnen ikke skal være nul.

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 ovenstående udløser for indsæt erklæring

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

Output

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 ovenstående trigger for opdateringserklæring

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

Output

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.

Du kan teste denne trigger i dit skema ved at downloade demotabellerne fra følgende link Download Scott Schema script.

Se også:

  • Hvordan bruges globale midlertidige tabeller i Oracle-proceduren?
  • Oracle Trigger med eksempel på WHEN-sætning
  • Tabeltype i Oracle-procedureeksempel
  1. ORA-01658:ude af stand til at oprette INITIAL-udstrækning for segment i tablespace TS_DATA

  2. Få feltværdien med en markør

  3. Opsætning af fremmednøgle med anden datatype

  4. Undertrykk advarselsmeddelelser ved hjælp af mysql inde fra Terminal, men adgangskode skrevet i bash-script