Trigger DML nel database di esempio AdventureWorks
In questo argomento vengono illustrati alcuni esempi di trigger DML presenti nel database di esempio AdventureWorks2008R2. Questi trigger DML sono progettati per imporre l'applicazione delle regole business di Adventure Works Cycles e aiutare a proteggere l'integrità dei dati contenuti nel database.
Per visualizzare il testo di ogni trigger in SQL Server Management Studio
In Esplora oggetti individuare la tabella in cui è definito il trigger e quindi espandere la cartella Trigger.
Fare clic con il pulsante destro del mouse sul trigger desiderato, quindi scegliere Crea script per trigger.
Impostazione di un campo dopo un aggiornamento
Trigger DML uSalesOrderHeader
La tabella Sales.SalesOrderHeader contiene la colonna RevisionNumber in cui è indicato il numero di volte che una riga specifica, ad esclusione del campo Status, è stata aggiornata. Il trigger DML uSalesOrderHeader comporta l'aumento del campo RevisionNumber di un'unità, oppure l'impostazione del valore del campo su 1 se il valore precedente era NULL, dopo un aggiornamento.
Il trigger uPurchaseOrderHeader esegue la stessa azione sulla tabella Purchasing.PurchaseOrderHeader e il trigger DML uSalesOrderHeader la esegue sulla tabella Sales.SalesOrderHeader.
Popolamento di una tabella dopo un inserimento e successiva impostazione di un campo in un'altra tabella
Trigger DML iPurchaseOrderDetail e uPurchaseOrderHeader
Quando vengono inseriti dati nella tabella PurchaseOrderDetail, il trigger DML iPurchaseOrderDetail inserisce una parte dei dati inseriti anche nella tabella Production.TransactionHistory. Poiché gli articoli contenuti in più righe di PurchaseOrderDetail formano un ordine di acquisto nella tabella PurchaseOrderHeader, il campo Subtotal di PurchaseOrderHeader deve essere aggiornato quando viene inserito un elemento in PurchaseOrderDetail. Il trigger iPurchaseOrderDetail consente l'aggregazione del campo LineTotal di PurchaseOrderDetail per un ordine di vendita specifico e l'impostazione del campo Subtotal di PurchaseOrderHeader con tale aggregazione.
Si noti che, quando il trigger DML esegue un aggiornamento in Purchasing.PurchaseOrderHeader, questa azione comporta l'attivazione del trigger di aggiornamento uPurchaseOrderHeader presente nella tabella Purchasing.PurchaseOrderHeader. Per ulteriori informazioni sui trigger che provocano l'attivazione di altri trigger, vedere Utilizzo di trigger nidificati.
Il trigger DML uPurchaseOrderDetail esegue le stesse azioni di iPurchaseOrderDetail sulle tabelle TransactionHistory e PurchaseOrderHeader, ma l'esecuzione avviene quando la tabella PurchaseOrderDetail viene aggiornata e non quando viene inserito un elemento.
I trigger DML iWorkOrder e uWorkOrder nella tabella Production.WorkOrder inseriscono dati solo nella tabella TransactionHistory.