Comando vinculado a uma tabela que executa um ação assim que algum comando de UPDATE, INSERT ou DELETE é executado na tabela onde a trigger está vinculada.
Trigger de INSERT
CREATE TRIGGER trgINSERT_CLIENTE
ON Clientes
FOR INSERT
AS
BEGIN
INSERT clientes_audit
SELECT *,[TRG_OPERACAO] = 'INSERT', [TRG_DATA]=GETDATE(), [TRG_FLAG]='NEW' FROM Inserted
END;Trigger de DELETE
CREATE TRIGGER trgDELETE_CLIENTE
ON dbo.Clientes
FOR DELETE
AS
BEGIN
INSERT dbo.clientes_audit SELECT *,[TRG_OPERACAO] = 'DELETE',[TRG_DATA]=GETDATE(),[TRG_FLAG]='OLD' FROM Deleted
END;Trigger de UPDATE
CREATE TRIGGER trgUPDATE_CLIENTE
ON dbo.Clientes
FOR UPDATE
AS
BEGIN
INSERT dbo.clientes_audit SELECT *,[TRG_OPERACAO] = 'UPDATE',[TRG_DATA]=GETDATE(),[TRG_FLAG]='OLD' FROM Deleted
INSERT dbo.clientes_audit SELECT *,[TRG_OPERACAO] = 'UPDATE',[TRG_DATA]=GETDATE(),[TRG_FLAG]='NEW' FROM Inserted
END;Tabela
CREATE TABLE [clientes_audit] (
[ClienteCodigo] [int] NULL,
[ClienteCPF] [varchar](50) NULL,
[ClienteNome] [varchar](50) NULL,
[ClienteSobrenome] [varchar](50) NULL,
[ClienteSexo] [char](1) NULL,
[ClienteNascimento] [datetime] NULL,
[ClienteEstadoCivil] [char](1) NULL,
[ClienteRua] [varchar](1000) NULL,
[ClienteNumero] [int] NULL,
[ClienteBairro] [varchar](50) NULL,
[ClienteCEP] [varchar](25) NULL,
[ClienteCidade] [varchar](50) NULL,
[ClienteEstado] [char](50) NULL,
[ClientePais] [varchar](50) NULL,
[ClienteRendaAnual] [money] NULL,
[ClienteTelefone] [varchar](50) NULL,
[ClienteEmail] [varchar](80) NULL,
[TRG_OPERACAO] CHAR(10),
[TRG_DATA] DATETIME,
[TRG_FLAG] CHAR(3)
)