São blocos de execução nomeados, sua principal diferença em relação as Procedures e Packages, é que não existe "chamada" para Trigger sua execução é iniciada a partir de de uma ação de DML (Insert, Update ou Delete) na tabela a qual ela esta vinculada. O Trigger é disparado toda vez que ocorre uma ação na tabela.
Fonte: https://docs.oracle.com/cd/B19306_01/server.102/b14220/triggers.htm |
Os Triggers podem ser do tipo:
- ROW LEVEL (Linha)
- STATEMENT (Tabela).
Podendo ser acionadas antes (BEFORE) ou depois(AFTER) da execução da DML na tabela.
Esse recurso de banco é utilizado principalmente quando existe a necessidade de se manter uma integridade dos dados alem das chaves (PK e FK), e para realizar a auditoria das alterações. Exemplo quando precisa-se manter um histórico de qual usuário realizou alteração e quando em outra tabela do sistema.
Triggers é um recurso poderoso dos SGBDs porem pode causar muita lentidão no sistema se mal aplicado, pois pode aumentar muito o tempo de execução de simples Inserts, Updates ou delete. O mais recomendado é criar a trigger Row Level ( Linha) validando apenas a coluna e/ou ação.
Dentro das triggers encontramos 2 tipos específicos de variáveis :old e :new que permitem consultar o conteúdo da tabela anterior a ação de DML e posterior ação de DML respectivamente.