Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Este artigo descreve como criar um gatilho Transact-SQL Data Manipulation Language (DML) 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 pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.
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
Pode utilizar um dos seguintes métodos:
Utilize SQL Server Management Studio
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.
Expanda Bancos de dados, expanda o
AdventureWorks2025banco de dados, expanda Tabelas e, em seguida, expanda a tabelaPurchasing.PurchaseOrderHeader.Clique com o botão direito do mouse em Gatilhos e selecione Novo Gatilho.
No menu Consulta , selecione Especificar valores para parâmetros de modelo. Como alternativa, você pode pressionar (Ctrl-Shift-M) para abrir a caixa de diálogo Especificar valores para parâmetros de modelo .
Na caixa de diálogo Especificar valores para parâmetros de modelo , insira os seguintes valores para os parâmetros mostrados.
Parâmetro Valor Autor O teu nome Data de Criação Data de hoje Descrição Verifica a classificação de crédito do fornecedor antes de permitir que uma nova ordem de compra com o fornecedor seja inserida. Schema_Name PurchasingTrigger_Name NewPODetail2Table_Name PurchaseOrderDetailData_Modification_Statement Remova UPDATEeDELETEda 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 esta 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.
Utilize o Transact-SQL
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.
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 como antes. O gatilho é válido para inserções de várias linhas e linhas únicas, 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;