Modifica o ridenominazione di trigger DMLModify or Rename DML Triggers

In questo argomento viene illustrato come modificare o rinominare un trigger DML in SQL Server 2017SQL Server 2017 utilizzando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to modify or rename 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

Limitazioni e restrizioni Limitations and Restrictions

  • Quando si rinomina un trigger, il trigger deve trovarsi nel database corrente e il nuovo nome deve seguire le regole per gli identificatori.When you rename a trigger, the trigger must be in the current database, and the new name must follow the rules for identifiers.

Indicazioni Recommendations

  • È consigliabile non usare la stored procedure sp_rename per rinominare un trigger.We recommend you do not use the sp_rename stored procedure to rename a trigger. La modifica di una parte del nome di un oggetto potrebbe compromettere il funzionamento di script e stored procedure.Changing any part of an object name can break scripts and stored procedures. La ridenominazione di un trigger non comporta la modifica del nome dell'oggetto corrispondente nella colonna di definizione della vista del catalogo sys.sql_modules .Renaming a trigger does not change the name of the corresponding object name in the definition column of the sys.sql_modules catalog view. È consigliabile eliminare e ricreare il trigger.We recommend that you drop and and re-create the trigger instead.

  • Se si modifica il nome di un oggetto a cui fa riferimento un trigger DML, è necessario modificare il trigger in modo che il testo corrisponda al nuovo nome.If you change the name of an object referenced by a DML trigger, you must modify the trigger so that its text reflects the new name. Pertanto, prima di rinominare un oggetto, visualizzare le dipendenze dell'oggetto per determinare se la modifica proposta interessa i trigger.Therefore, before you rename an object, display the dependencies of the object first to determine whether any triggers are affected by the proposed change.

  • È inoltre possibile rinominare i trigger DML per crittografarne la definizione.A DML trigger can also be modified to encrypt its definition.

  • Per visualizzare le dipendenze di un trigger, è possibile utilizzare SQL Server Management StudioSQL Server Management Studio o la funzione e viste del catalogo seguenti:To view the dependencies of a trigger, you can use SQL Server Management StudioSQL Server Management Studio or the following function and catalog views:

Sicurezza Security

Autorizzazioni Permissions

Per modificare un trigger DML è necessaria l'autorizzazione ALTER sulla tabella o vista in cui è definito il trigger.To alter a DML trigger requires ALTER permission on the table or view on which the trigger is defined.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per modificare un trigger DMLTo modify 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 modificare.Expand the database that you want, expand Tables, and then expand the table that contains the trigger that you want to modify.

  3. Espandere Trigger, fare clic con il pulsante destro del mouse sul trigger da modificare, quindi scegliere Modifica.Expand Triggers, right-click the trigger to modify, and then click Modify.

  4. Modificare il trigger e fare clic su Esegui.Modify the trigger, and then click Execute.

Per rinominare un trigger DMLTo rename a DML trigger

  1. Eliminare il trigger che si desidera rinominare.Delete the trigger that you want to rename.

  2. Ricreare il trigger, specificando il nuovo nome.Re-create the trigger, specifying the new name.

Utilizzo di Transact-SQL Using Transact-SQL

Per modificare un trigger utilizzando ALTER TRIGGERTo modify a trigger using ALTER 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 query.Copy and paste the following examples into the query. Eseguire il primo esempio per creare un trigger DML per la stampa di un messaggio definito dall'utente nel client quando un utente tenta di aggiungere o modificare i dati delle modifiche nella tabella SalesPersonQuotaHistory .Execute the first example to create a DML trigger that prints a user-defined message to the client when a user tries to add or change data in the SalesPersonQuotaHistory table. Eseguire l'istruzione ALTER TRIGGER per modificare il trigger in modo che venga attivato solo con le attività INSERT .Execute the ALTER TRIGGER statement to modify the trigger to fire only on INSERT activities. Questo trigger risulta molto utile, in quanto ricorda all'utente che aggiorna o inserisce righe nella tabella di inviare una notifica al reparto Compensation .This trigger is helpful because it reminds the user that updates or inserts rows into this table to also notify the Compensation department.

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

Per rinominare un trigger utilizzando DROP TRIGGER e ALTER TRIGGERTo rename a trigger using DROP TRIGGER and ALTER 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 l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute. In questo esempio vengono utilizzate le istruzioni DROP TRIGGER e ALTER TRIGGER per rinominare il trigger Sales.bonus_reminder in Sales.bonus_reminder_2.This example use the DROP TRIGGER and ALTER TRIGGER statements to rename the Sales.bonus_reminder trigger to Sales.bonus_reminder_2.

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_2  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  

Vedere ancheSee Also

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)
sp_rename (Transact-SQL) sp_rename (Transact-SQL)
ALTER TRIGGER (Transact-SQL) ALTER TRIGGER (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)