Implementazione di trigger DDLImplement DDL Triggers

In questo argomento vengono fornite informazioni sulla creazione, la modifica, la disabilitazione o l'eliminazione di trigger DDL.This topic provides information to help you create DDL triggers, modify DDL triggers, and disable or drop DDL triggers.

Creazione di trigger DDLCreating DDL Triggers

I trigger DDL vengono creati mediante l'istruzione Transact-SQLTransact-SQL CREATE TRIGGER per trigger DDL.DDL triggers are created by using the Transact-SQLTransact-SQL CREATE TRIGGER statement for DDL triggers.

Per creare un trigger DDLTo create a DDL trigger

Importante

La restituzione di set di risultati dai trigger verrà rimossa a partire da una delle prossime versioni di SQL ServerSQL Server.The ability to return result sets from triggers will be removed in a future version of SQL ServerSQL Server. I trigger che restituiscono set di risultati possono provocare comportamenti imprevisti nelle applicazioni che non sono state progettate per il loro utilizzo.Triggers that return result sets may cause unexpected behavior in applications that are not designed to work with them. Evitare di restituire set di risultati dai trigger in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni che attualmente li restituiscono.Avoid returning result sets from triggers in new development work, and plan to modify applications that currently do this. Per impedire che i trigger restituiscano set di risultati in SQL ServerSQL Server, impostare l'opzione Disallow Results From Triggers su 1.To prevent triggers from returning result sets in SQL ServerSQL Server, set the disallow results from triggers Option to 1. L'impostazione predefinita per questa opzione sarà 1 nella prossima versione di SQL ServerSQL Server.The default setting of this option will be 1 in a future version of SQL ServerSQL Server.

Modifica di trigger DDLModifying DDL Triggers

Se è necessario modificare la definizione di un trigger DDL, è possibile eliminare e creare nuovamente il trigger oppure ridefinire il trigger esistente in un unico passaggio.If you have to modify the definition of a DDL trigger, you can either drop and re-create the trigger or redefine the existing trigger in a single step.

Se si modifica il nome di un oggetto a cui fa riferimento un trigger DDL, è necessario modificare il trigger in modo che il testo corrisponda al nuovo nome.If you change the name of an object that is referenced by a DDL trigger, you must modify the trigger so that its text reflects the new name. Pertanto, prima di rinominare un oggetto, visualizzare le dipendenze dell'oggetto per determinare se la modifica proposta interessa i trigger.Therefore, before renaming an object, display the dependencies of the object first to determine whether any triggers are affected by the proposed change.

È inoltre possibile modificare i trigger per crittografarne la definizione.A trigger can also be modified to encrypt its definition.

Per modificare un triggerTo modify a trigger

Disabilitazione ed eliminazione di trigger DDLDisabling and Dropping DDL Triggers

Quando un trigger DDL non è più necessario, è possibile disabilitarlo o eliminarlo.When a DDL trigger is no longer needed, you can disable it or delete it.

La disabilitazione di un trigger DDL non ne comporta l'eliminazione.Disabling a DDL trigger does not drop it. Il trigger continua a esistere come oggetto nel database correnteThe trigger still exists as an object in the current database. ma non viene attivato quando viene eseguita una qualsiasi istruzione Transact-SQLTransact-SQL in cui è stato programmato.However, the trigger will not fire when any Transact-SQLTransact-SQL statements on which it was programmed are run. I trigger DDL disabilitati possono essere riabilitati.DDL triggers that are disabled can be reenabled. A seguito di tale operazione, il trigger DDL viene attivato nello stesso modo in cui è stato attivato al momento della creazione.Enabling a DDL trigger causes it to fire in the same way the trigger did when it was originally created. Per impostazione predefinita, i trigger DDL vengono abilitati al momento della creazione.When DDL triggers are created, they are enabled by default.

Quando si elimina un trigger DDL, questo viene rimosso dal database corrente.When a DDL trigger is deleted, it is dropped from the current database. Ciò non ha alcun effetto sugli oggetti o sui dati per il cui ambito il trigger DDL è stato definito.Any objects or data upon which the DDL trigger is scoped are not affected.

Per disabilitare un trigger DDLTo disable a DDL trigger