Pular para o conteúdo

Linguagem SQL (II) (Triggers)

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)
)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *