Supprimer ou désactiver les déclencheurs DML

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

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

Dans cette rubrique

Avant de commencer

Recommandations

  • La suppression d'un déclencheur entraîne sa suppression définitive de la base de données actuelle. La table et les données sur lesquelles il est basé ne sont pas affectées. La suppression d'une table supprime automatiquement les déclencheurs qui lui sont associés.

  • Un déclencheur est activé par défaut lors de sa création.

  • La désactivation d'un déclencheur ne le supprime pas. Le déclencheur existe toujours en tant qu'objet dans la base de données actuelle. Il ne s'activera toutefois pas lors de l'exécution d'une instruction INSERT, UPDATE ou DELETE pour laquelle il avait été programmé. Tout déclencheur désactivé peut être à nouveau réactivé. Un déclencheur n'est pas recréé par son activation. Le déclencheur est activé de la même manière que lorsqu'il a été initialement créé.

Sécurité

Autorisations

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

Pour désactiver ou activer un déclencheur DML, un utilisateur doit avoir au minimum l'autorisation ALTER pour la table ou la vue sur laquelle le déclencheur a été créé.

Utilisation de SQL Server Management Studio

Pour supprimer 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 supprimer.

  3. Développez Déclencheurs, cliquez avec le bouton droit sur le déclencheur à supprimer, puis cliquez sur Supprimer.

  4. Dans la boîte de dialogue Supprimer un objet , vérifiez que le déclencheur correct est spécifié et cliquez sur OK.

Pour désactiver et activer 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 désactiver.

  3. Développez Déclencheurs, cliquez avec le bouton droit sur le déclencheur à désactiver, puis cliquez sur Désactiver.

  4. Pour activer le déclencheur, cliquez sur Activer.

Utilisation de Transact-SQL

Pour supprimer un déclencheur DML

  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 la fenêtre de requête. Exécutez l'instruction CREATE TRIGGER pour créer le déclencheur Sales.bonus_reminder . Pour supprimer le déclencheur, exécutez l'instruction DROP TRIGGER .

--Create the trigger.  
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  
  
--Delete the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL  
   DROP TRIGGER Sales.bonus_reminder;  
GO  
  

Pour désactiver et activer un déclencheur DML

  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 la fenêtre de requête. Exécutez l'instruction CREATE TRIGGER pour créer le déclencheur Sales.bonus_reminder . Pour désactiver et activer le déclencheur, exécutez les instructions DISABLE TRIGGER et ENABLE TRIGGER , respectivement.

--Create the trigger.  
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  
  
--Disable the trigger.  
USE AdventureWorks2022;  
GO  
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  
  
--Enable the trigger.  
USE AdventureWorks2022;  
GO  
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  

Voir aussi

ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (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)