Trigger
Definição
Trigger
Um tipo especial de stored procedure que é executado em determinadas circunstâncias (eventos) associadas à manipulação de dados.
SQL Server suporta dois tipos de trigger: DML e DDL. Só vamos tratar de triggers DML:
São criados em tabelas (ou vistas) e têm uma ou mais ações associadas (INSERT, UPDATE, DELETE).
Quando ocorre uma das ações previstas, os triggers são “disparados” (executados).
Exemplos de uso:
Maintenance of duplicate and derived data;
Complex column constraints;
Cascading referential integrity;
Complex defaults;
Inter-database referential integrity.
Conceitos Básicos
SQL Server triggers são disparados uma vez por cada operação de modificação de dados
Não por tuplo afectado – caso da Oracle.
Ter em atenção que os triggers estendem a duração da transação:
Pode criar problemas de locks/blocks em sistemas de elevado desempenho.
Compromisso entre integridade dos dados e potencial impacto no desempenho.
Existem dois tipos de DML triggers que diferem quanto ao propósito, timing e efeito.
instead of
after
Transaction Flow
É importante entender em que parte da transação ocorre cada um dos triggers...
IDENTITY INSERT check
Null ability constraint
Data-type check
INSTEAD OF trigger execution
If an INSTEAD OF trigger exists, then execution of the DML stops here. INSTEAD OF triggers are not recursive. Therefore, if the INSERT trigger executes another DML command, then the INSTEAD OF trigger will be ignored the second time around.
Primary-key constraint
Check constraints
Foreign-key constraint
Foreign-key constraint
AFTER trigger execution
Commit transaction
Ideias a reter...
AFTER trigger pode assumir que os dados passaram todos as verificações de integridade de dados.
AFTER trigger ocorre depois de todos os constraints
Não pode corrigir eventuais problemas dos dados.
AFTER trigger ocorre antes do commit1 da transação DML. Assim podemos fazer o rollback1 da transação se os dados forem inaceitáveis.
INSTEAD OF trigger – a transação para no ponto 4 e nenhum dos posteriores é executado, incluindo a instrução DML.
INSTEAD OF trigger pode “contornar” problemas de integridade referencial mas não de nulidade, tipo de dados e identidade das colunas.
Create, Enable/Disable, Drop
Sintaxe
Criação
Ativar | Desativa
Eliminar
Last updated