Banco de Dados

3 out, 2018

Renda-se: é uma trigger!

Publicidade

Trigger – recurso injustiçado!

Nos últimos anos tenho percebido uma certa resistência ao uso das triggers. Mas o fato é que este recurso pode ser fantástico se usado nas situações certas.

O que é uma trigger?

Trigger são comandos armazenados no banco de dados, associados a uma tabela e executados automaticamente em resposta a um comando de insert, delete e update.

Tipos de trigger

Uma trigger pode ser de três tipos diferentes: FOR, AFTER e INSTEAD OF.

O tipo de trigger determina o momento em que ela será executada.

  • FOR é o valor padrão e indica que a trigger será executada junto com o comando de insert, delete ou update que a disparou.
  • AFTER faz com que a trigger seja executada após a ação que a gerou ser concluída.
  • INSTEAD OF faz com que a trigger seja executada no lugar da ação que o gerou.

Qual problema elas resolvem?

Triggers são usadas em validações, logs, exclusões lógicas, execução de regras de negócio, entre várias outras situações.

Dica da Dani: cuidado com o código escrito nas triggers! Você escreveu muitas linhas de código? Então veja se a sua ideia está correta. Triggers são feitas para resolver problemas complexos de forma simples.

Sintaxe para criar uma trigger:

CREATE TRIGGER Nome da Trigger

ON Nome da tabela

[FOR/AFTER/INSTEAD OF] [INSERT/UPDATE/DELETE]

AS

--Código da Trigger

A sintaxe é bem simples se você entendeu o que é uma trigger, e pode ser lida da seguinte forma:

Crie uma trigger como o nome XXXX associada a tabela ABC executada no momento FOR/AFTER/INSTEAD OF em resposta a um comando INSERT/UPDATE/DELETE.

No exemplo abaixo uma mensagem é exibida sempre que forem incluídos ou alterados dados da tabela Customer.

CREATE TRIGGER trgLembrete 
ON Sales.Customer 
AFTER INSERT, UPDATE  
AS RAISERROR (‘Notifique a equipe responsável!’, 16, 10); 
GO
Com a trigger criada, é só testar a alteração de um registro:

--Testar a trigger atualizando um registro na tabela

UPDATE [Sales].[Customer] Set
    [ModifiedDate] = getdate()
WHERE CustomerID  =1
Criação da trigger, sua localização e o resultado da atualização de um registro.

Conclusão

Este é um recurso pouco usado porque dá um certo susto nos desenvolvedores. Mas você é diferente, tenho certeza que utilizará as triggers com sucesso porque fará a análise correta antes de criar triggers e criará códigos simples e bem testados.

Este artigo possui somente uma introdução, mas se vc quiser saber mais sobre este assunto, eu recomendo dois links:

Downloads e links