sp_settriggerorder (Transact-SQL)

Mis à jour : 12 décembre 2006

Spécifie les déclencheurs AFTER activés en premier ou en dernier. L'ordre d'exécution des déclencheurs AFTER activés entre les premier et dernier déclencheurs est indéfini.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

sp_settriggerorder [ @triggername = ] '[ triggerschema. ] triggername' 
        , [ @order = ] 'value' 
        , [ @stmttype = ] 'statement_type' 
        [ , [ @namespace = ] { 'DATABASE' | 'SERVER' | NULL } ]

Arguments

  • [ @triggername= ] '[ triggerschema**.****] triggername**'**
    Nom du déclencheur et, éventuellement, du schéma auquel il appartient, dont l'ordre doit être défini ou modifié. [triggerschema**.**]triggername est de type sysname. Si le nom ne correspond pas à un déclencheur ou si le nom correspond à un déclencheur INSTEAD OF, la procédure retourne une erreur. triggerschema ne peut pas être spécifié pour des déclencheur DDL ou de connexion.
  • [ @order= ] 'value'
    Paramètre du nouvel ordre pour le déclencheur. L'argument value est de type varchar(10) et peut représenter l'une des valeurs suivantes.

    ms186762.note(fr-fr,SQL.90).gifImportant :
    Les déclencheurs First et Last doivent être deux déclencheurs différents.
    Valeur Description

    First

    Le déclencheur est activé en premier.

    Last

    Le déclencheur est activé en dernier.

    None

    L'ordre d'activation du déclencheur n'est pas défini.

  • [ @stmttype= ] 'statement_type'
    Spécifie l'instruction SQL qui active le déclencheur. statement_type est de type varchar(50) et peut être INSERT, UPDATE, DELETE, LOGON, ou n'importe quel événement d'instruction Transact-SQL répertorié dans Événements DDL à utiliser avec les déclencheurs DDL. Les groupes d'événements ne peuvent pas être spécifiés.

    Un déclencheur peut être désigné comme déclencheur First ou Last pour un type d'instruction, uniquement après avoir été défini comme le déclencheur du type d'instruction spécifiée. Par exemple, le déclencheur TR1 peut être désigné comme First pour l'instruction INSERT sur la table T1, à condition que TR1 soit d'abord défini comme un déclencheur INSERT. Le moteur de base de données SQL Server 2005 retourne une erreur si TR1, qui n'a été défini qu'en tant que déclencheur INSERT, est configuré en tant que déclencheur First ou Last pour une instruction UPDATE. Pour plus d'informations, consultez la rubrique Notes, ci-après.

  • @namespace= { 'DATABASE' | 'SERVER' | NULL }
    Lorsque triggername est un déclencheur DDL ou de connexion, indique si triggername a été créé avec une étendue de base de données ou de serveur. Notez que les déclencheurs de connexion peuvent être créés uniquement avec une étendue de serveur. Pour plus d'informations sur la portée des déclencheurs DDL, consultez Conception des déclencheurs DDL. S'il n'est pas spécifié ou qu'il a pour valeur NULL, l'argument triggername est un déclencheur DML.

Notes

Il ne peut y avoir qu'un déclencheur First et qu'un déclencheur Last par instruction sur une même table.

Si un déclencheur First est déjà défini sur la table, sur la base de données ou sur le serveur, vous ne pouvez pas désigner un nouveau déclencheur en tant que déclencheur First pour cette table, cette base de données ou ce serveur pour le même statement_type. Cette restriction s'applique également aux déclencheurs Last.

La réplication génère automatiquement un premier déclencheur pour toute table incluse dans un abonnement mis à jour immédiatement ou en attente. Elle nécessite un déclencheur qui soit le premier. Elle génère une erreur si vous essayez d'inclure une table détenant un premier déclencheur dans un abonnement mis à jour immédiatement ou en attente. Si vous essayez de définir un déclencheur en tant que premier déclencheur après avoir inclus une table dans un abonnement, sp_settriggerorder retourne une erreur. Si vous utilisez ALTER TRIGGER sur le déclencheur de réplication ou si, à l'aide de sp_settriggerorder, vous définissez son rang d'exécution sur Last ou None, l'abonnement ne fonctionnera pas correctement.

Si une instruction ALTER TRIGGER modifie un premier ou un dernier déclencheur, l'attribut First ou Last défini à l'origine sur le déclencheur est supprimé, et la valeur est remplacée par None. La valeur de l'ordre doit être réinitialisée à l'aide de sp_settriggerorder.

Si le même déclencheur doit être désigné comme le premier ou le dernier pour plusieurs types d'instructions, sp_settriggerorder doit être exécuté pour chaque type d'instruction. De même, le déclencheur doit d'abord être défini pour un type d'instruction avant de pouvoir être désigné comme déclencheur First ou Last, à déclencher pour ce type d'instruction spécifiée.

Autorisations

Pour définir l'ordre d'un déclencheur DDL ou de connexion avec une étendue de serveur (créé ON ALL SERVER), nécessite l'autorisation CONTROL SERVER.

Pour définir l'ordre d'un déclencheur DDL avec une étendue de base de données (à l'aide de la clause ON DATABASE), requiert l'autorisation ALTER ANY DATABASE DDL TRIGGER.

Pour définir l'ordre d'un déclencheur DML, requiert l'autorisation ALTER sur la table ou vue sur laquelle le déclencheur est configuré.

Valeurs du code de retour

0 (réussite) et 1 (échec)

Exemples

A. Définition de l'ordre d'activation d'un déclencheur DML

L'exemple suivant spécifie que le déclencheur uSalesOrderHeader est le premier déclencheur à activer après une opération UPDATE sur la table Sales.SalesOrderHeader.

USE AdventureWorks;
GO
sp_settriggerorder @triggername= 'Sales.uSalesOrderHeader', @order='First', @stmttype = 'UPDATE';

B. Définition de l'ordre d'activation d'un déclencheur DDL

L'exemple suivant spécifie que le déclencheur ddlDatabaseTriggerLog est le premier déclencheur à activer après un événement ALTER_TABLE dans la base de données AdventureWorks.

USE AdventureWorks;
GO
sp_settriggerorder @triggername= 'ddlDatabaseTriggerLog', @order='First', @stmttype = 'ALTER_TABLE', @namespace = 'DATABASE';

Voir aussi

Référence

Procédures stockées système (Transact-SQL)
Procédures stockées du moteur de base de données (Transact-SQL)
ALTER TRIGGER (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

12 décembre 2006

Nouveau contenu :
  • Ajout d'informations tout au long de la rubrique sur les déclencheurs de connexion qui sont introduits dans SQL Server 2005 Service Pack 2.