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




2-)



Bacana ?? Eu achei… bem prático e simples.


Mais informações ?
http://msdn2.microsoft.com/en-us/library/ms175941.aspx

Até…

Responda

blog luisph © 2007-2008 by Luís Fernandes.
Powered by Wordpress | Theme designed by WPDesigner