Condividi tramite


Modificare o rinominare trigger DML

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

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

Limiti

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

Consigli

Evitare di 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:

Autorizzazioni

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

Usare SQL Server Management Studio

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 selezionare Modifica.

  4. Modificare il trigger e fare clic su Esegui.

Rinominare un trigger DML

  1. Eliminare o disabilitare il trigger DML che si desidera rinominare.
  2. Creare il nuovo trigger DML, specificando il nuovo nome.

Usare Transact-SQL

Modificare un trigger utilizzando ALTER TRIGGER

  1. Connettersi al motore di database di.

  2. Nella barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente 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 .

    1. Creare il trigger.

      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
      
    2. Modificare il trigger.

      USE AdventureWorks2022;
      GO
      ALTER TRIGGER Sales.bonus_reminder
      ON Sales.SalesPersonQuotaHistory
      AFTER INSERT
      AS RAISERROR ('Notify Compensation', 16, 10);
      GO
      

Rinominare un trigger usando DROP TRIGGER e CREATE TRIGGER

  1. Connettersi al motore di database di.

  2. Nella barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare 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