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.
Trigger ou gatilho é um recurso que é executado quando existir alguma modificação na tabela.
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.
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
//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