sql >> Base de Datos >  >> RDS >> Oracle

Ejemplo de la cláusula WHEN del activador de Oracle

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