CriandoBits
Identifique-se Entrar Esqueceu a senha? Esqueci minha senha

SQL Server - Triggers

Por Benedito Silva Júnior - publicado em 26/07/2016


Um TRIGGER, ou gatilho, é um objeto de banco de dados, associado a uma tabela, definido para ser disparado, respondendo a um evento em particular. Tais eventos são os comandos DML (Data Manipulation Language): INSERT, REPLACE, DELETE ou UPDATE.

Podemos definir inúmeros TRIGGERS em uma base de dados baseados diretamente em qual dos comandos acima irá dispará-lo, sendo que, para cada um, podemos definir apenas um TRIGGER. Os TRIGGERS poderão ser disparados para trabalharem antes ou depois do evento.

A sintaxe para a criação de um Trigger:

   CREATE TRIGGER "nome" 
   ON tabela //define em qual tabela o trigger vai agir
   FOR "comando DML" //comando DML que aciona o trigger
   AS
   BEGIN
      <declarações>
   END 
Criação de um trigger:

CREATE TRIGGER trg_atualiza_data //define a trigger ON cadastro_clientes //define a tabela na qual a trigger vai agir FOR INSERT //a trigger será disparada ao executar o comando INSERT //ações que a trigger irá executar AS BEGIN DECLARE //declaração de variáveis @codigo_cliente int, @nome varchar(100), @data_de_hoje date; //serão armazenados os dados do cliente que acabou de ser inserido no banco de dados SELECT //pega os valores informados e atribui as variáveis @codigo_cliente = codigo_cliente, @nome = nome, @data_de_hoje = GETDATE() //pega data do servidor FROM INSERTED //pega último registro inserido na tabela de clientes (cadastro_clientes) /* será executado o comando de inserção na outra tabela pelo trigger usando os valores armazenados nas variáveis */ INSERT INTO datas_cadastros (codigo_cliente, data_cadastro) VALUES(@codigo_cliente, @data_de_hoje) END

Para fazer o trigger disparar:

//executa um comandos simples de inclusão no banco de dados INSERT INTO cadastro_clientes(codigo_cliente, nome, data) VALUES(1,'Benedito', GETDATE())

Ao executar o comando INSERT o trigger irá disparar a ação de inserir a data atual do servidor na outra tabela.

Para excluir o trigger:

DROP TRIGGER trg_atualiza_data GO

Listar todas as triggers criadas:

SELECT * FROM sys.triggers


 
VoltarTopo