Compartilhar via


Modificar ou renomear gatilhos DML

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco 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 o 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. A alteração de qualquer parte de um nome de objeto pode quebrar scripts e procedimentos armazenados. A ação de renomear um gatilho não altera o nome do objeto correspondente na coluna de definição da exibição de catálogo sys.sql_modules. Nós recomendamos que você remova e recrie o gatilho.

Se você alterar o nome de um objeto referenciado por um gatilho DML, é preciso modificar o gatilho para que seu texto reflita o novo nome. Portanto, antes de renomear um objeto, exiba primeiramente as dependências do objeto para determinar se a mudança proposta afeta algum gatilho.

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 visualizações de funções e catálogos:

Permissões

A alteração de um gatilho DML exige permissão ALTER na tabela ou exibição 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-a.

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

  3. Expanda Gatilhos, 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 desabilite o gatilho DML que você deseja renomear.
  2. Crie o novo o gatilho DML, especificando o novo nome.

Usar 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 seguinte exemplo 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 a ser disparado apenas nas atividades INSERT . Esse gatilho é útil porque lembra ao usuário que atualiza ou insere linhas nessa tabela que também notifique o departamento Compensation .

    1. Crie o 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
      

Renomear 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 gatilho Sales.bonus_reminder como 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