DDL Triggers
Triggers todos conhecemos, certo ? É um negocinho (quase uma store procedure :P) que é executado automaticamente após alguma alteração nos dados de uma tabela ou view, maravilha! Esses Triggers são DML (Data Manipulation Language) - são disparados quando acontece um dos eventos: INSERT, UPDATE ou DELETE.
Hoje vamos falar um pouco sobre uma novidade que veio com o MS SQL Server 2005: DDL (Data Definition Language) Triggers. A diferença entre os Triggers DML (que conhecemos), é que o tipo do evento é diferente, para os “DLL Triggers” serem disparados precisamos de eventos DLL :). Quais seriam eles ?? CREATE, DROP, ALTER, GRANT, DENY e REVOKE.
Falando na prática… acho que é um recurso bastante interessante quando pensamos em registro de alterações de base ou até auditorias.
Bom .. vamos a um exemplo:
- O primeiro passo é criarmos a tabela onde iremos armazenar as informações das alterações da base de dados:
CREATE TABLE DatabaseLogs
(
LogId INT PRIMARY KEY IDENTITY(1,1)
, LogDetails XML NOT NULL
)
- Agora criamos o DLL Trigger:
CREATE TRIGGER LoggingDatabase
ON DATABASE
FOR CREATE_TABLE, DROP_TABLE AS
BEGIN
INSERT DatabaseLogs (LogDetails)
SELECT EVENTDATA()
END
- Tudo pronto para o grande teste:
–CRIANDO UMA TABELA QUALQUER
CREATE TABLE TestingTrigger (TestId INT)
–EXCLUINDO UMA TABELA QUALQUER
DROP TABLE TestingTrigger
- Agora, vamos analisar a tabela DatabaseLogs:
SELECT * FROM DatabaseLogs
Clicando nos detalhes de cada linha que foi gerada, podemos visualizar o seguinte:
1-)
Bacana ?? Eu achei… bem prático e simples.
Mais informações ?
http://msdn2.microsoft.com/en-us/library/ms175941.aspx
Até…
14/02/2007 | Disponível em: Sql Server |