Banco de dados

Trigger – (Exemplo no SQL Server)

O post Trigger – (Exemplo no SQL Server) explica o que é trigger, quais são suas principais características e como utilizá-la em um banco de dados SQL Server.

O que é uma trigger

Trigger, ou gatilho, são códigos armazenados dentro de um banco de dados que são executados automaticamente pelo banco (dependendo dos comandos declarados dentro da trigger). Ou seja, uma trigger é formada por vários comandos, dentre esses comandos, esta a tabela em que a trigger esta associada, e o comando que ativara a mesma, (insert, update ou delete), fazendo com que todos os comandos que estejam no interior do corpo da  trigger sejam executados.
Uma trigger pode ser utilizada, ao se inserir um item em uma tabela de itens de venda, fazendo com que automaticamente, na tabela estoque, seja feita a baixa do item inserido na tabela de itens de venda, isso porque existe um trigger associada a tabela itens de venda.

Cabeçalho de uma trigger

O cabeçalho de uma trigger é basicamente dividida em 3 partes, onde recebe 3 parâmetros.
  • O primeiro parâmetro é o nome da trigger, que é a forma que será identificada no banco de dados.
  • O segundo parâmetro é o nome da tabela que a trigger esta vinculada, que é de onde vem o evento que ira disparar o gatilho.
  • O terceiro parâmetro é o tipo da trigger, que pode ser FOR/AFTER ou INSTEAD OF, cada um executa os comandos em um tempo diferente.

Tipos de trigger

Como vimos anteriormente, existem 2 tipos de triggers, o FOR/AFTER e o INSTEAD OF, agora veremos as diferenças de cada um deles.
  • FOR/AFTER: Executa a trigger somente depois que a gravação, atualização ou exclusão é feita no banco de dados. Ou seja, quando executado o comando insert em uma tabela que tenha uma trigger associada a ela, primeiro é feita a inserção na tabela, para depois executar os comandos definidos na trigger. É o tipo padrão quando uma trigger é criada.
  • INSTEAD OF: A trigger é disparada antes de modificar ou inserir o registro na tabela. Por exemplo: é executada uma Update em uma tabela que tenha uma trigger associada a ela, antes de fazer a atualização na tabela, vai ser executado todos os comandos da trigger.

Sintaxe de Uma trigger

CREATE TRIGGER nome { BEFORE | AFTER } { evento [ OR … ] }

ON nometabela

[ FOR [ EACH ] { ROW | STATEMENT } ]

 

Exemplo de uma trigger

Para ilustrarmos o exemplo de uma trigger, tomemos como exemplo as tabelas de produto, venda e itensvenda de um banco de dados.
Ao inserir um registro na tabela de itensvenda, a trigger tgiDecrementaEstoqueVenda é executada fazendo com que a quantidade do produto inserido na tabela itensvenda seja decrementado na tabela de produto.
CREATE trigger tgiDecrementaEstoqueVenda on itensvenda
for insert
as
BEGIN
DECLARE @qtde float,
@codigo integer
SELECT @codigo = pro_cod, @qtde = itv_qtde FROM INSERTED
update produto set pro_qtde = pro_qtde – @qtde where produto.pro_cod = @codigo
end
go

Facilidades de que uma trigger traz

 

As triggers são mecanismos úteis para alertar usuários ou iniciar tarefas automaticamente, quando certas condições forem satisfeitas, Exemplos:
  • Atualizar estoque em sistemas de venda;
  • Inserir empréstimos ao utilizar limite em sistemas bancários.
  • Incrementar contador.
  • Alertar estoque mínimos.

Conclusão final

Em um banco bem estruturado, a utilização de uma trigger é essencial para o bom funcionamento do projeto, evitando criar processos muitas vezes cansativos, deixando com que o banco mesmo execute esses processos sem maiores transtornos.