Modifier ou renommer les déclencheurs DML

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Cette rubrique explique comment modifier ou renommer un déclencheur DML dans SQL Server à l’aide de SQL Server Management Studio ou de Transact-SQL.

Dans cette rubrique

Avant de commencer

Limitations et restrictions

  • 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

  • Nous vous recommandons de ne pas 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 peuvent être concernés par la modification projeté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 les vues de fonction et de catalogue suivantes :

Sécurité

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.

Utilisation de SQL Server Management Studio

Pour 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 cliquez sur Modifier.

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

Pour renommer un déclencheur DML

  1. Supprimez le déclencheur que vous souhaitez renommer.

  2. Recréez le déclencheuren spécifiant un nouveau nom.

Utilisation de Transact-SQL

Pour 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, cliquez sur Nouvelle requête.

  3. Copiez et collez les exemples suivants dans le volet de 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 .

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  
  
USE AdventureWorks2022;  
GO  
ALTER TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
AFTER INSERT  
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  

Pour 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, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter. Cet exemple utilise les instructions DROP TRIGGER et ALTER 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  
  

Voir aussi

CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
Obtenir des informations sur les déclencheurs DML
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)