Criar gatilhos DML
Este tópico descreve como criar um gatilho DML Transact-SQL usando o SQL Server Management Studio e a declaração Transact-SQL CREATE TRIGGER.
Antes de começar
Limitações e restrições
Para obter uma lista de limitações e restrições relacionada a criar gatilhos DML, consulte CREATE TRIGGER (Transact-SQL).
Permissões
Exige a permissão ALTER na tabela ou exibição na qual o gatilho é criado.
Como criar um gatilho DML
Você pode usar uma das seguintes opções:
SQL Server Management Studio
Transact-SQL
Usando o SQL Server Management Studio
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e, então, expanda essa instância.
Expanda Bancos de Dados, expanda o banco de dados AdventureWorks2012 , expanda Tabelas e expanda a tabela Purchasing.PurchaseOrderHeader.
Clique com o botão direito do mouse em Gatilhos e selecione Novo Gatilho.
No menu Consulta, clique em Especificar Valores para Parâmetros de Modelo. Outra alternativa é pressionar (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
Autor
Your name
Data de criação
Today's date
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
Purchasing
Trigger_Name
NewPODetail2
Table_Name
PurchaseOrderDetail
Data_Modification_Statement
Remova UPDATE e DELETE da lista.
Clique em OK.
No Editor de Consultas, substitua o comentário -- Insert statements for trigger here pela 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. 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.
[Início]
Usando Transact-SQL
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e, então, 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 como anteriormente.
-- 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;
[Início]