Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle avant l'insertion ou l'exemple de déclencheur de mise à jour

Voici un exemple de déclencheur Oracle BEFORE INSERT OR UPDATE pour effectuer des validations lors de l'insertion ou de la mise à jour des enregistrements dans la table EMP.

Exemple de déclencheur Oracle BEFORE INSERT OR UPDATE

Le déclencheur ci-dessous effectuera les deux vérifications suivantes sur la table EMP. (1) Si vous insérez les enregistrements, il vérifiera que la colonne de commission ne dépasse pas 500. (2) En cas de mise à jour, il vérifiera que la colonne JOB ne doit pas être définie comme nulle.

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;

Tester au-dessus du déclencheur pour l'instruction d'insertion

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

Sortie

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.

Tester le déclencheur ci-dessus pour l'instruction de mise à jour

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

Sortie

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.

Vous pouvez tester ce déclencheur dans votre schéma en téléchargeant les tables de démonstration à partir du lien suivant Télécharger le script Scott Schema.

Voir aussi :

  • Comment utiliser les tables temporaires globales dans la procédure Oracle ?
  • Exemple de déclencheur Oracle avec clause WHEN
  • Type de table dans l'exemple de procédure Oracle