Como criar uma DDL Trigger no SQL Server 2005

Uma DDL Trigger responde aos comandos:

  • CREATE, ALTER ou DROP - para objetos do SQL Server como DATABASE, TABLE, FUNCTION, PROCEDURE, VIEW, etc;
  • GRANT, DENY ou REVOKE - para atribuições de permissão de acesso;
  • UPDATE STATISTICS - nas atualizações de estatísticas.

Um exemplo de criação de uma DLL trigger que crie um log a cada manutenção feita numa tabela é:

CREATE DATABASE EXEMPLO_TRIGGER
GO

USE EXEMPLO_TRIGGER

CREATE TABLE LOG
(
   MAQUINA SYSNAME DEFAULT HOST_NAME(),
   DADOS XML
)

CREATE TRIGGER DDL_VIGIA_TABLE
ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS
INSERT INTO LOG(DADOS) VALUES (EVENTDATA())
GO

CREATE TABLE PESSOA
(
   COD INT IDENTITY, NOME VARCHAR(50)
)

SELECT * FROM LOG

ALTER TABLE PESSOA ADD PRIMARY KEY ( COD )

SELECT * FROM LOG

DROP TABLE PESSOA

SELECT * FROM LOG