Eliminare o disabilitare trigger DMLDelete or Disable DML Triggers

In questo argomento viene descritto come eliminare o disabilitare un trigger DML in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to delete or disable a DML trigger in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Indicazioni Recommendations

  • Un trigger eliminato viene rimosso dal database corrente,When a trigger is deleted, it is dropped from the current database. ma la tabella e i dati su cui si basa il trigger non subiscono alcun impatto.The table and the data upon which it is based are not affected. L'eliminazione di una tabella comporta automaticamente l'eliminazione di tutti i trigger della tabella.Deleting a table automatically deletes any triggers on the table.

  • Per impostazione predefinita, un trigger viene abilitato quando viene creato.A trigger is enabled by default when it is created.

  • La disabilitazione di un trigger non ne comporta l'eliminazione.Disabling a 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. Il trigger, tuttavia, non viene attivato quando viene eseguita qualsiasi istruzione INSERT, UPDATE o DELETE in cui è stato programmato.However, the trigger will not fire when any INSERT, UPDATE, or DELETE statement on which it was programmed is executed. I trigger disabilitati possono essere riabilitati.Triggers that are disabled can be reenabled. L'abilitazione di un trigger non comporta la sua creazione ex-novo.Enabling a trigger does not re-create it. Il trigger viene attivato allo stesso modo in cui è stato creato in origine.The trigger fires in the same manner as when it was originally created.

Sicurezza Security

Autorizzazioni Permissions

Per l'eliminazione di un trigger DML è richiesta l'autorizzazione ALTER per la tabella o la vista in cui è definito il trigger.To delete a DML trigger requires ALTER permission on the table or view on which the trigger is defined.

Per disabilitare o abilitare un trigger DML, è necessario disporre almeno dell'autorizzazione ALTER per la tabella o la vista per cui il trigger è stato creato.To disable or enable a DML trigger, at a minimum, a user must have ALTER permission on the table or view on which the trigger was created.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per eliminare un trigger DMLTo delete a DML trigger

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine , quindi espanderla.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine and then expand that instance.

  2. Espandere il database desiderato, espandere Tabelle, quindi espandere la tabella che contiene il trigger da eliminare.Expand the database that you want, expand Tables, and then expand the table that contains the trigger that you want to delete.

  3. Espandere Trigger, fare clic con il pulsante destro del mouse sul trigger da eliminare, quindi fare clic su Elimina.Expand Triggers, right-click the trigger to delete, and then click Delete.

  4. Nella finestra di dialogo Elimina oggetto , verificare il trigger da eliminare, quindi fare clic su OK.In the Delete Object dialog box, verify the trigger to delete, and then click OK.

Per abilitare e disabilitare un trigger DMLTo disable and enable a DML trigger

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine , quindi espanderla.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine and then expand that instance.

  2. Espandere il database desiderato, espandere Tabelle, quindi espandere la tabella che contiene il trigger da disabilitare.Expand the database that you want, expand Tables, and then expand the table that contains the trigger that you want to disable.

  3. Espandere Trigger, fare clic con il pulsante destro del mouse sul trigger da disabilitare, quindi fare clic su Disabilita.Expand Triggers, right-click the trigger to disable, and then click Disable.

  4. Per abilitare il trigger, fare clic su Abilita.To enable the trigger, click Enable.

Utilizzo di Transact-SQL Using Transact-SQL

Per eliminare un trigger DMLTo delete a DML trigger

  1. Connettersi al Motore di databaseDatabase Engine.Connect to the Motore di databaseDatabase Engine.

  2. Dalla barra Standard fare clic su Nuova query.From the Standard bar, click New Query.

  3. Copiare e incollare gli esempi seguenti nella finestra delle query.Copy and paste the following examples into the query window. Per creare il trigger , eseguire l'istruzione CREATE TRIGGER Sales.bonus_reminder .Execute the CREATE TRIGGER statement to create the Sales.bonus_reminder trigger. Per eliminare il trigger, eseguire l'istruzione DROP TRIGGER .To delete the trigger, execute the DROP TRIGGER statement.

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

Per abilitare e disabilitare un trigger DMLTo disable and enable a DML trigger

  1. Connettersi al Motore di databaseDatabase Engine.Connect to the Motore di databaseDatabase Engine.

  2. Dalla barra Standard fare clic su Nuova query.From the Standard bar, click New Query.

  3. Copiare e incollare gli esempi seguenti nella finestra delle query.Copy and paste the following examples into the query window. Per creare il trigger , eseguire l'istruzione CREATE TRIGGER Sales.bonus_reminder .Execute the CREATE TRIGGER statement to create the Sales.bonus_reminder trigger. Per disabilitare e abilitare il trigger, eseguire le istruzioni DISABLE TRIGGER e ENABLE TRIGGER , rispettivamente.To disable and enable the trigger, execute the DISABLE TRIGGER and ENABLE TRIGGER statements, respectively.

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

Vedere ancheSee Also

ALTER TRIGGER (Transact-SQL) ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL) CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL) DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL) ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL) DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
Ottieni informazioni sui trigger DML Get Information About DML Triggers
sp_help (Transact-SQL) sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL) sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL) sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL) sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL) sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL) sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL) sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL) sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL) sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL) sys.server_assembly_modules (Transact-SQL)