Condividi tramite


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.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo di SQL Server Management Studio

Per modificare un trigger DML

  1. In Esplora oggetti connettersi a un'istanza del Motore di database, quindi 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 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.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo di Transact-SQL

Per modificare un trigger utilizzando ALTER TRIGGER

  1. Connettersi al Motore di database.

  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 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

  1. Connettersi al Motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. 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

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Vedere anche

Riferimento

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)

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)

Concetti

Ottieni informazioni sui trigger DML