Gatilhos DML no banco de dados de exemplo AdventureWorks
Este tópico descreve vários exemplos de gatilhos DML incluídos no banco de dados de exemplo AdventureWorks2008R2. Os gatilhos DML são projetados para aplicar as regras empresariais do Ciclos da Adventure Works e para ajudar a proteger a integridade de seus dados.
Para exibir o texto de cada gatilho no SQL Server Management Studio
No Pesquisador de Objetos, localize a tabela na qual o gatilho está definido e expanda a pasta Gatilhos.
Clique com o botão direito do mouse no gatilho que deseja e, em seguida, clique em Script de Gatilho como.
Definindo um campo após uma atualização
Gatilho DML uSalesOrderHeader
A tabela Sales.SalesOrderHeader contém a coluna RevisionNumber para refletir o número de vezes que uma determinada linha, excluindo o campo Status, foi atualizada. O gatilho DML uSalesOrderHeader incrementa o campo RevisionNumber em um valor, ou o define para um, se ele estiver nulo, após uma atualização.
O gatilho DML uPurchaseOrderHeader efetua a mesma ação na tabela Purchasing.PurchaseOrderHeader, que o gatilho DML uSalesOrderHeader efetua na tabela Sales.SalesOrderHeader.
Populando uma tabela após uma inserção e definindo, em seguida, um campo em outra tabela
Gatilhos DML iPurchaseOrderDetail e uPurchaseOrderHeader
Ao inserir dados na tabela PurchaseOrderDetail, o gatilho DML iPurchaseOrderDetail insere também uma parte dos dados inseridos na tabela Production.TransactionHistory. Como vários itens de linha em PurchaseOrderDetail compõem uma ordem de compra na tabela PurchaseOrderHeader, o campo Subtotal em PurchaseOrderHeader deve ser atualizado quando uma inserção ocorrer em PurchaseOrderDetail. O gatilho iPurchaseOrderDetail agrega o campo LineTotal de PurchaseOrderDetail de uma determinada ordem de venda, e define o campo Subtotal de PurchaseOrderHeader com essa agregação.
Observe que, quando o gatilho DML efetua uma atualização em Purchasing.PurchaseOrderHeader, essa ação aciona o gatilho de atualização uPurchaseOrderHeader que existe na tabela Purchasing.PurchaseOrderHeader. Para obter mais informações sobre gatilhos que acionam outros gatilhos, consulte Usando gatilhos aninhados.
O gatilho DML uPurchaseOrderDetail efetua as mesmas ações para as tabelas TransactionHistory e PurchaseOrderHeader que iPurchaseOrderDetail`; mas, executa quando a tabela PurchaseOrderDetail é atualizada, e não quando recebe uma inserção.
Gatilhos DML iWorkOrder e uWorkOrder na tabela Production.WorkOrder inserem dados somente na tabela TransactionHistory.