segunda-feira, março 15, 2010

Triggers

Em MS SQL Server 2005 temos dois tipos de Triggers: DML(em respostas a comandos Insert, update e delete) e DDL(geralmente usado para processos de auditoria)

Abaixo um exemplo da criação de uma Trigger DML
Criando a tabela que vai ser realizado o update

create table produto
(ProdutoID int NOT NULL,
)

Criando a tabela que contera as informações das alterações realizadas(update)

create table TriggerDML
(auditID int identity(1,1) primary key,
ProdutoID int not null,
usuario sysname not null
);

Criando a trigger

create trigger auditoria
on produto -- tabela que vai ser auditada
for update -- para update
as
insert into TriggerDML -- tabela que vou inserir as informações de auditoria
(ProdutoID,usuario) -- os campos em q serão inseridos as informações
select produtoID,suser_name() -- buscando as alterações
from
produto

Criando uma segunda Trigger que vai mostra a mensagem “Um registro inserido na tabela” após uma operação de Insert.

create trigger TriggerDML2
on produto
for insert
as
print
'Um registro inserido na tabela'

Agora vou criar um trigger DDL

create trigger TriggerDDL
on database
for drop_table
as
print 'Você não pode excluir essa tabela'
rollback

Ao tentar executar a exclusão de qualquer tabela em que foi criando a trigger eu vou receber a mensagem “Você não pode excluir essa tabela”, e nenhuma tabela da batabase será excluida.

Nenhum comentário: