Como criar uma Trigger

Publicado 26/2/2009 por fernandasallai em SQL

Resolvi criar este post porque estava pesquisando sobre criação de trigger e na web os exemplos que encontrei achei um pouco confusos, espero que este post esclareça as dúvidas que surgirem.

  • Conceito

Trigger ou gatilho é um recurso que é executado quando existir alguma modificação na tabela.

  • Motivo do uso

Estamos fazendo a migração de um projeto para um cliente, porém temos que tomar um certo cuidado porque o cliente irá utilizar o site antigo e o novo.

O cliente quer migrar o site da intranet conforme o da internet e queremos utilizar o mesma solução, mas para isso precisamos deixar os bancos de dados compatíveis sem afetar o site da intranet antigo. Por exemplo na tabela eventos na intranet temos a coluna Evt_Description e na internet a coluna Description, então criaremos na intranet a coluna Description e criar uma trigger para receber os valores que a Evt_Description receber na hora da inserção e atualização.

  • Criação da tabela

CREATE TABLE [dbo].[Events](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NULL,
[Date] [datetime] NULL,
[Evt_Description] [text] NULL,
[Description] [text] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END

  • Criação da trigger

//Criando uma trigger chamada TR_EVENTOS

CREATE TRIGGER TR_EVENTOS

//Na tabela events
ON EVENTS

//Depois que for realizado a inserção ou alteração dos dados

//Pode usar o BEFORE que significa antes de realizado a alteração na tabela real
AFTER INSERT,UPDATE
AS
BEGIN

SET NOCOUNT ON;

//Alterar na tabela events

UPDATE EVENTS

//Campo description receberá o valor do campo evt_description
SET DESCRIPTION = EVT_DESCRIPTION

//Quando o ID estiver no intervalo do resultado da sub query
WHERE ID IN (
SELECT ID

//INSERTED é uma tabela temporária que irá conter os resultados da busca
FROM INSERTED
)
END

GO


Comentários

Lena United States

quarta-feira, 16 de fevereiro de 2011 21:57

Lena

Thank you for another informative website. Where else could I get that type of information written in such an ideal way? I've a project that I'm just now working on, and I have been on the look out for such info.

Comentar


(Vai mostrar seu Gravatar)

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading



Fernanda Sallai

Sem a curiosidade que me move, que me inquieta, que me insere na busca, não aprendo nem ensino - Paulo Freire