En este artículo, aprenderá cómo usar la cláusula WHEN en el disparador de Oracle para hacer que el disparador se active en la condición especificada. A continuación se muestra un ejemplo.
Puede probar este ejemplo de disparador creando la siguiente tabla y disparador en su esquema de base de datos de Oracle.
Crear tabla
CREATE TABLE EMP ( EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10 BYTE), JOB VARCHAR2(9 BYTE), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) ) /
Cree un activador de base de datos Oracle con la cláusula WHEN
El siguiente activador se activará solo cuando JOB sea igual a CLERK , y si es así, establecerá la columna COMM (comisión) en 0.
CREATE OR REPLACE TRIGGER emp_trig_1 BEFORE INSERT ON EMP FOR EACH ROW WHEN (NEW.job = 'CLERK') BEGIN :NEW.comm := 0; END; /
Prueba
La siguiente declaración de inserción para la tabla EMP intentará insertar un registro para CAJERO con comisión 300.
SET DEFINE OFF; Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) Values (7499, 'ALLEN', 'CLERK', 7698, TO_DATE('02/20/1981 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1600, 300, 30); COMMIT;
Consultar la tabla
Ahora consulte la tabla EMP para el registro insertado anteriormente y encontrará que el valor de la columna COMM es 0 .
SELECT * FROM EMP WHERE EMPNO = 7499;
Véase también:
- Aprenda a crear un disparador en Oracle SQL Developer
- Crear disparadores en el ejemplo de Oracle Forms