Modificare o rinominare trigger DML

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

Questo argomento illustra come rinominare un trigger DML in SQL Server usando SQL Server Management Studio o Transact-SQL.

Contenuto dell'articolo

Prima di iniziare

Limitazioni e restrizioni

  • Quando si rinomina un trigger, il trigger deve trovarsi nel database corrente e il nuovo nome deve seguire le regole per gli identificatori.

Consigli

  • È consigliabile non usare la stored procedure sp_rename per rinominare un trigger. La modifica di una parte del nome di un oggetto potrebbe compromettere il funzionamento di script e stored procedure. 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 . È consigliabile eliminare e ricreare il trigger.

  • 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. Pertanto, prima di rinominare un oggetto, visualizzare le dipendenze dell'oggetto per determinare se la modifica proposta interessa i trigger.

  • È inoltre possibile rinominare i trigger DML per crittografarne la definizione.

  • Per visualizzare le dipendenze di un trigger, è possibile utilizzare SQL Server Management Studio o la funzione e viste del catalogo seguenti:

Sicurezza

Autorizzazioni

Per modificare un trigger DML è necessaria l'autorizzazione ALTER sulla tabella o vista in cui è definito il trigger.

Utilizzo di SQL Server Management Studio

Per modificare un trigger DML

  1. In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.

  2. Espandere il database desiderato, espandere Tabelle, quindi espandere la tabella che contiene il trigger da modificare.

  3. Espandere Trigger, fare clic con il pulsante destro del mouse sul trigger da modificare, quindi scegliere Modifica.

  4. Modificare il trigger e fare clic su Esegui.

Per rinominare un trigger DML

  1. Eliminare il trigger che si desidera rinominare.

  2. Ricreare il trigger, specificando il nuovo nome.

Utilizzo di Transact-SQL

Per modificare un trigger utilizzando ALTER TRIGGER

  1. Connettersi al motore di database di .

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare gli esempi seguenti nella 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 . Eseguire l'istruzione ALTER TRIGGER per modificare il trigger in modo che venga attivato solo con le attività INSERT . Questo trigger risulta molto utile, in quanto ricorda all'utente che aggiorna o inserisce righe nella tabella di inviare una notifica al reparto 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  
  

Per rinominare un trigger utilizzando DROP TRIGGER e ALTER TRIGGER

  1. Connettersi al motore di database di .

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui. In questo esempio vengono utilizzate le istruzioni DROP TRIGGER e ALTER TRIGGER per rinominare il trigger Sales.bonus_reminder in 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  
  

Vedi anche

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)
Recuperare informazioni sui trigger 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)