Partilhar via


Modificar ou renomear gatilhos DML

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Este artigo descreve como modificar ou renomear um gatilho DML no SQL Server usando o SQL Server Management Studio ou Transact-SQL.

Limitações

Quando você renomeia um gatilho, o gatilho deve estar no banco de dados atual e o novo nome deve seguir as regras para identificadores.

Recomendações

Evite usar o procedimento armazenado sp_rename para renomear um gatilho. Alterar qualquer parte do nome de um objeto pode interromper scripts e procedimentos armazenados. Renomear um gatilho não altera o nome do objeto correspondente na coluna de definição na vista de catálogo sys.sql_modules. Recomendamos que elimine e recrie o gatilho.

Se você alterar o nome de um objeto referenciado por um gatilho DML, deverá modificá-lo para que seu texto reflita o novo nome. Portanto, antes de renomear um objeto, exiba as dependências do objeto primeiro para determinar se a alteração proposta afeta quaisquer gatilhos.

Um gatilho DML também pode ser modificado para criptografar sua definição.

Para exibir as dependências de um gatilho, você pode usar o SQL Server Management Studio ou as seguintes exibições de função e catálogo:

Permissões

Para alterar um gatilho DML, é necessária a permissão ALTER na tabela ou vista na qual o gatilho está definido.

Usar o SQL Server Management Studio

Modificar um gatilho DML

  1. No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.

  2. Expanda o banco de dados desejado, expanda Tabelase, em seguida, expanda a tabela que contém o gatilho que você deseja modificar.

  3. Expanda Triggers, clique com o botão direito do mouse no gatilho a ser modificado e selecione Modificar.

  4. Modifique o gatilho e selecione Executar.

Renomear um gatilho DML

  1. Exclua ou desative o trigger DML que deseja renomear.
  2. Criar o novo gatilho DML, especificando o novo nome.

Utilize o Transact-SQL

Modificar um gatilho usando ALTER TRIGGER

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, selecione Nova Consulta.

  3. Copie e cole o exemplo a seguir na consulta. Execute o primeiro exemplo para criar um gatilho DML que imprime uma mensagem definida pelo usuário para o cliente quando um usuário tenta adicionar ou alterar dados na tabela SalesPersonQuotaHistory. Execute a instrução ALTER TRIGGER para modificar o gatilho para disparar somente em atividades INSERT. Este gatilho é útil porque lembra ao utilizador de que deve atualizar ou inserir linhas nesta tabela e também notificar o departamento Compensation.

    1. Criar gatilho.

      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. Altere o gatilho.

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

Renomeie um gatilho usando DROP TRIGGER e CREATE TRIGGER

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, selecione Nova Consulta.

  3. Copie e cole o exemplo a seguir na janela de consulta e selecione Executar. Este exemplo usa as instruções DROP TRIGGER e CREATE TRIGGER para renomear o Sales.bonus_reminder trigger para 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