Modifica o ridenominazione di trigger DML
In questo argomento viene illustrato come modificare o rinominare un trigger DML in SQL Server 2012 utilizzando SQL Server Management Studio o Transact-SQL.
Contenuto dell'argomento
Prima di iniziare:
Limitazioni e restrizioni
Consigli
Sicurezza
Per modificare o rinominare un trigger DML utilizzando:
SQL Server Management Studio
Transact-SQL
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 utilizzare 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 consente di modificare il nome dell'oggetto corrispondente nella colonna definition 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 per la tabella o la vista in cui è definito il trigger.
[Top]
Utilizzo di SQL Server Management Studio
Per modificare un trigger DML
In Esplora oggetti connettersi a un'istanza del Motore di database, quindi espanderla.
Espandere il database desiderato, espandere Tabelle, quindi espandere la tabella che contiene il trigger da modificare.
Espandere Trigger, fare clic con il pulsante destro del trigger da modificare, quindi scegliere Modifica.
Modificare il trigger e fare clic su Esegui.
Per rinominare un trigger DML
Eliminare il trigger che si desidera rinominare.
Ricreare il trigger, specificando il nuovo nome.
[Top]
Utilizzo di Transact-SQL
Per modificare un trigger utilizzando ALTER TRIGGER
Connettersi al Motore di database.
Dalla barra Standard fare clic su Nuova query.
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 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 TRIGGER
Connettersi al Motore di database.
Dalla barra Standard fare clic su Nuova query.
Copiare e incollare l'esempio seguente nella finestra Query, quindi scegliere 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 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
[Top]
Vedere anche
Riferimento
DISABLE TRIGGER (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)