Compreendendo os gatilhos DDL

Os disparadores DDL, como os gatilhos regulares, disparam procedimentos armazenados em resposta a um evento. Contudo, ao contrário dos gatilhos DML, não disparam em resposta a instruções UPDATE, INSERT ou DELETE em uma tabela ou exibição.. Em vez disso, disparam em resposta a uma variedade de eventos DDL (Data Definition Language). Esses eventos correspondem, principalmente, a instruções Transact-SQL que começam com as palavras-chave CREATE, ALTER e DROP. Certos procedimentos armazenados do sistema que executam operações similares a DDL também podem acionar disparadores DDL.

Observação importanteImportante

Teste seus disparadores DDL para determinar as respostas aos procedimentos armazenados do sistema que são executados. Por exemplo, a instrução CREATE TYPE e o procedimento armazenado sp_addtype acionarão um disparador DDL criado em um evento CREATE_TYPE. .

Os disparadores DDL podem ser usados para tarefas administrativas, como auditoria e regulação de operações de banco de dados.

Use disparadores DDL quando quiser fazer o seguinte:

  • Prevenir determinadas alterações em seu esquema de banco de dados.

  • Que algo ocorra no banco de dados em resposta a uma alteração em seu esquema de banco de dados.

  • Registrar alterações ou eventos no esquema de banco de dados.

Os disparadores DDL são acionados somente depois da execução das instruções DDL que os dispararam. Os disparadores DDL não podem ser usados como gatilhos INSTEAD OF.

Os exemplos a seguir mostram como um gatilho DLL pode ser usado para impedir que qualquer tabela do banco de dados seja modificada ou descartada.

CREATE TRIGGER safety 
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE 
AS 
   PRINT 'You must disable Trigger "safety" to drop or alter tables!' 
   ROLLBACK ;

Os gatilhos DLL podem ser acionados em resposta a um evento Transact-SQL processado no banco de dados ou no servidor atual. O escopo do gatilho depende do evento. Para obter mais informações sobre o escopo de um gatilho DLL, consulte Criando gatilhos DDL.

Para obter um exemplo de gatilho DLL que está disponível no banco de dados de exemplo AdventureWorks2008R2, no Pesquisador de Objetos do SQL Server Management Studio, abra a pasta Gatilhos de Banco de Dados, localizada na pasta Programação do banco de dados AdventureWorks2008R2. Clique com o botão direito do mouse em ddlDatabaseTriggerLog e selecione Script de Gatilho de Banco de Dados como. Por padrão, o disparador DDL ddlDatabaseTriggerLog encontra-se desabilitado.