Partager via


Modifier ou renommer les déclencheurs DML

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Cet article décrit comment modifier ou renommer un déclencheur DML dans SQL Server en utilisant SQL Server Management Studio ou Transact-SQL.

Limites

Lorsque vous renommez un déclencheur, celui-ci doit se trouver dans la base de données actuelle et le nouveau nom doit respecter les règles applicables aux identificateurs.

Recommandations

Évitez d’utiliser la procédure stockée sp_rename pour renommer un déclencheur. La modification d'une partie du nom de l'objet peut provoquer des problèmes dans des scripts et des procédures stockées. Le fait de renommer un déclencheur ne modifie pas le nom de l’objet correspondant dans la colonne de définition de l’affichage catalogue sys.sql_modules. Nous vous recommandons plutôt de supprimer et de recréer le déclencheur.

Si vous changez le nom d'un objet référencé par un déclencheur DML, vous devez modifier le déclencheur pour que sa définition se réfère au nouveau nom de l'objet. Par conséquent, avant de renommer un objet, affichez les dépendances de l'objet pour savoir si des déclencheurs sont concernés par la modification proposée.

Un déclencheur DML peut aussi être modifié pour en chiffrer la définition.

Pour afficher les dépendances d'un déclencheur, vous pouvez utiliser SQL Server Management Studio ou la fonction et les affichages catalogue suivants :

autorisations

La modification d'un déclencheur DML nécessite une autorisation ALTER sur la table ou la vue sur laquelle le déclencheur est défini.

Utiliser SQL Server Management Studio

Modifier un déclencheur DML

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.

  2. Développez la base de données choisie, développez Tables, puis développez la table qui contient le déclencheur que vous souhaitez modifier.

  3. Développez Déclencheurs, cliquez avec le bouton droit sur le déclencheur à modifier, puis sélectionnez Modifier.

  4. Modifiez le déclencheur, puis sélectionnez Exécuter.

Renommer un déclencheur DML

  1. Supprimez ou désactivez le déclencheur DML que vous souhaitez renommer.
  2. Créez le nouveau déclencheur DML en spécifiant un nouveau nom.

Utiliser Transact-SQL

Modifier un déclencheur à l'aide de ALTER TRIGGER

  1. Connectez-vous au Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la requête. Exécutez le premier exemple pour créer un déclencheur DML qui envoie un message défini par l'utilisateur au client lorsqu'un utilisateur tente d'ajouter ou de modifier les données de la table SalesPersonQuotaHistory . Exécutez l'instruction ALTER TRIGGER pour modifier le déclencheur afin qu'il s'active uniquement sur des activités INSERT . Ce déclencheur est utile car il rappelle à l'utilisateur qui met à jour ou insère des lignes dans cette table de notifier également le département Compensation .

    1. Créez un déclencheur.

      USE AdventureWorks2022;
      GO
      
      IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
          DROP TRIGGER Sales.bonus_reminder;
      GO
      
      CREATE TRIGGER Sales.bonus_reminder
          ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION
          AFTER INSERT, UPDATE
      AS RAISERROR ('Notify Compensation', 16, 10);
      GO
      
    2. Modifiez le déclencheur.

      USE AdventureWorks2022;
      GO
      ALTER TRIGGER Sales.bonus_reminder
      ON Sales.SalesPersonQuotaHistory
      AFTER INSERT
      AS RAISERROR ('Notify Compensation', 16, 10);
      GO
      

Renommer un déclencheur à l'aide de DROP TRIGGER et ALTER TRIGGER

  1. Connectez-vous au Moteur de base de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter. Cet exemple utilise les instructions DROP TRIGGER et CREATE TRIGGER pour renommer le déclencheur Sales.bonus_reminder en Sales.bonus_reminder_2.

USE AdventureWorks2022;
GO

IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
    DROP TRIGGER Sales.bonus_reminder;
GO

CREATE TRIGGER Sales.bonus_reminder_2
    ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION
    AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO