Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do
AzureInstância
Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric
Este artigo descreve como criar um gatilho DML (linguagem de manipulação de dados) Transact-SQL com o SQL Server Management Studio ou a instrução Transact-SQL CREATE TRIGGER .
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar na página inicial Microsoft SQL Server Samples and Community Projects.
Limitações
Para obter uma lista de limitações e restrições relacionadas à criação de gatilhos DML, consulte CREATE TRIGGER.
Permissões
Requer ALTER permissão na tabela ou exibição na qual o gatilho está sendo criado.
Como criar um gatilho DML
É possível usar um dos seguintes métodos:
Utilize o SQL Server Management Studio
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda-a.
Expanda bancos de dados, expanda o
AdventureWorks2025banco de dados, expanda Tabelas e expanda a tabelaPurchasing.PurchaseOrderHeader.Clique com o botão direito do mouse em Gatilhose selecione Novo Gatilho.
No menu Consulta , selecione Especificar Valores para Parâmetros de Modelo. Como alternativa, pressione (Ctrl-Shift-M) para abrir caixa de diálogo Especificar Valores para Parâmetros de Modelo .
Na caixa de diálogo Especificar Valores para Parâmetros de Modelo , digite os seguintes valores para os parâmetros mostrados.
Parâmetro Valor Author Seu nome Criar Data Data de hoje Descrição Verifica a avaliação de crédito de fornecedor antes de permitir uma nova ordem de compra com o fornecedor a ser inserido. Schema_Name PurchasingTrigger_Name NewPODetail2Table_Name PurchaseOrderDetailData_Modification_Statement Remova UPDATEeDELETEremova da lista.Selecione OK.
No Editor de Consultas, substitua o comentário
-- Insert statements for trigger herepela seguinte instrução:IF @@ROWCOUNT = 1 BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + LineTotal FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID; END ELSE BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + (SELECT SUM(LineTotal) FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID) WHERE PurchaseOrderHeader.PurchaseOrderID IN (SELECT PurchaseOrderID FROM inserted); END;Para verificar se a sintaxe é válida, no menu Consulta , selecione Analisar. Se uma mensagem de erro for retornada, compare a instrução com o bloco de código anterior, corrija conforme necessário e repita essa etapa.
Para criar o gatilho DML, no menu Consulta , selecione Executar. O gatilho DML é criado como um objeto no banco de dados.
Para ver o gatilho DML listado no Pesquisador de Objetos, clique com o botão direito do mouse em Gatilhos e selecione Atualizar.
Usar Transact-SQL
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda-a.
No menu Arquivo , selecione Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e selecione Executar. Este exemplo cria o mesmo gatilho DML armazenado de antes. O gatilho é válido para inserções de linhas múltiplas e simples e ideal para inserções de linha única.
USE AdventureWorks2022; GO CREATE TRIGGER NewPODetail3 ON Purchasing.PurchaseOrderDetail FOR INSERT AS IF @@ROWCOUNT = 1 BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + LineTotal FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID; END ELSE BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + (SELECT SUM(LineTotal) FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID) WHERE PurchaseOrderHeader.PurchaseOrderID IN (SELECT PurchaseOrderID FROM inserted); END;