Neste artigo, você aprenderá como usar a cláusula WHEN no gatilho Oracle para fazer o gatilho disparar na condição especificada. Abaixo está um exemplo.
Você pode testar este exemplo de gatilho criando a tabela e o gatilho a seguir em seu esquema de banco de dados Oracle.
Criar tabela
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) ) /
Criar um gatilho de banco de dados Oracle com a cláusula WHEN
O acionador a seguir será acionado somente quando o JOB for igual a CLERK , e se for, então ele irá definir a coluna COMM (comissão) para 0.
CREATE OR REPLACE TRIGGER emp_trig_1 BEFORE INSERT ON EMP FOR EACH ROW WHEN (NEW.job = 'CLERK') BEGIN :NEW.comm := 0; END; /
Teste
A instrução de inserção abaixo para a tabela EMP tentará inserir um registro para CLERK com comissão 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;
Consulte a Tabela
Agora consulte a tabela EMP para o registro inserido acima e você descobrirá que o valor da coluna COMM é 0 .
SELECT * FROM EMP WHERE EMPNO = 7499;
Veja também:
- Saiba como criar um gatilho no Oracle SQL Developer
- Criar gatilhos no exemplo do Oracle Forms