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.
Este tópico descreve como criar um gatilho DML Transact-SQL usando o SQL Server Management Studio e usando a instrução CREATE TRIGGER Transact-SQL.
Antes de começar
Limitações e restrições
Para obter uma lista de limitações e restrições relacionadas à criação de gatilhos DML, consulte CREATE TRIGGER (Transact-SQL).
Permissões
Requer permissão ALTER na tabela ou visão na qual o gatilho está sendo criado.
Como criar um gatilho DML
Você pode usar um dos itens a seguir:
Como usar o 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 banco de dados AdventureWorks2012 , expanda Tabelas e expanda a tabela Purchaseing.PurchaseOrderHeader.
Clique com o botão direito em Gatilhos e selecione Novo Gatilho.
No menu Consulta, clique em 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 , digite os seguintes valores para os parâmetros mostrados.
Parâmetro Valor Autor Seu nome Data de criação Data de hoje Descrição Verifica a classificação de crédito do fornecedor antes de permitir que um novo pedido de compra com o fornecedor seja inserido. Nome do Esquema Compra Trigger_Name NewPODetail2 Table_Name Detalhe de Pedido de Compra Declaração de Modificação de Dados Remova UPDATE e DELETE da lista. Clique em 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, clique em Analisar. Se uma mensagem de erro for retornada, compare a instrução com as informações acima e corrija conforme necessário e repita esta etapa.
Para criar o gatilho DML, no menu Consulta , clique em 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.
Usando 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 , clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. Este exemplo cria o mesmo gatilho DML armazenado que acima.
-- Trigger valid for multirow and single row inserts -- and optimal for single row inserts. USE AdventureWorks2012; 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;