Descripción de los desencadenadores DDL

Los desencadenadores DDL, al igual que los desencadenadores habituales, activan procedimientos almacenados como respuesta a un evento. Sin embargo, a diferencia de los desencadenadores DML, no se activan como respuesta a las instrucciones UPDATE, INSERT o DELETE de una tabla o vista. En cambio, sí se activan en respuesta a diversos eventos del lenguaje de definición de datos (DDL). Estos eventos corresponden principalmente a instrucciones Transact-SQL que comienzan por las palabras clave CREATE, ALTER y DROP. Determinados procedimientos almacenados del sistema que realizan operaciones de estilo DDL también pueden activar desencadenadores DDL.

Nota importanteImportante

Pruebe los desencadenadores DDL para determinar su respuesta a los procedimientos almacenados del sistema que se ejecutan. Por ejemplo, la instrucción CREATE TYPE y el procedimiento almacenado sp_addtype activarán un desencadenador DDL creado en un evento CREATE_TYPE.

Los desencadenadores DDL pueden utilizarse para tareas administrativas como auditar y regular las operaciones de base de datos.

Utilice los desencadenadores DDL cuando:

  • Desee evitar determinados cambios en el esquema de base de datos.

  • Desee que ocurra algún evento en la base de datos como respuesta a un cambio realizado en el esquema de base de datos.

  • Desee registrar cambios o eventos del esquema de base de datos.

Los desencadenadores DDL sólo se activan cuando se ejecutan las instrucciones DDL que los desencadenan. Los desencadenadores DDL no se pueden utilizar como desencadenadores INSTEAD OF.

En el siguiente ejemplo se muestra el uso de un desencadenador DDL para evitar que se modifique o quite una tabla de una base de datos:

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

Los desencadenadores DDL pueden activarse en respuesta a un evento de Transact-SQL procesado en la base de datos actual o en el servidor actual. El ámbito del desencadenador depende del evento. Para obtener más información acerca del ámbito de un desencadenador DDL, vea Diseñar desencadenadores DDL.

Para ver un ejemplo de desencadenadores DDL que está disponible en la base de datos de ejemplo AdventureWorks, en el Explorador de objetos de SQL Server Management Studio, abra la carpeta Database Triggers, que se encuentra en la carpeta Programmability de la base de datos AdventureWorks. Haga clic con el botón secundario en ddlDatabaseTriggerLog y seleccione Incluir desencadenador de base de datos como. De forma predeterminada, el desencadenador DDL ddlDatabaseTriggerLog está deshabilitado.