Partager via


Déclencheurs DML dans l'exemple de base de données AdventureWorks

Cette rubrique décrit plusieurs exemples de déclencheurs DML qui sont compris dans l'exemple de base de données AdventureWorks2008R2. Ces déclencheurs DML ont été conçus pour appliquer la logique d'entreprise de Adventure Works Cycles et pour permettre la protection de l'intégrité de ses données.

Pour afficher le texte de chaque déclencheur dans SQL Server Management Studio

  1. Dans l'Explorateur d'objets, recherchez la table sur laquelle le déclencheur est défini, puis développez le dossier Déclencheurs.

  2. Cliquez avec le bouton droit sur le déclencheur de votre choix, puis cliquez sur Générer un script du déclencheur en tant que.

Définition d'un champ après une mise à jour

déclencheur DML uSalesOrderHeader

La table Sales.SalesOrderHeader contient la colonne RevisionNumber qui indique le nombre de mises à jour d'une ligne spécifique, à l'exclusion du champ Status. Après une mise à jour, le déclencheur DML uSalesOrderHeader incrémente le champ RevisionNumber d'une unité ou lui attribue la valeur 1 s'il a pour valeur NULL.

Le déclencheur DML uPurchaseOrderHeader exécute sur la table Purchasing.PurchaseOrderHeader la même action que le déclencheur DML uSalesOrderHeader sur la table Sales.SalesOrderHeader.

Remplissage d'une table après une insertion, puis définition d'un champ dans une autre table

Déclencheurs DML iPurchaseOrderDetail et uPurchaseOrderHeader

Lorsque des données sont insérées dans la table PurchaseOrderDetail, le déclencheur DML iPurchaseOrderDetail insère une partie d'entre elles dans la table Production.TransactionHistory. Étant donné que plusieurs articles dans PurchaseOrderDetail composent un bon de commande dans la table PurchaseOrderHeader, le champ Subtotal de PurchaseOrderHeader doit être mis à jour lorsqu'une insertion se produit dans PurchaseOrderDetail. Le déclencheur iPurchaseOrderDetail agrège le champ LineTotal de PurchaseOrderDetail pour une commande spécifique, puis définit le champ Subtotal de PurchaseOrderHeader avec cette agrégation.

Lorsque le déclencheur DML effectue une mise à jour sur Purchasing.PurchaseOrderHeader, cette action déclenche le déclencheur de mise à jour uPurchaseOrderHeader qui existe sur la table Purchasing.PurchaseOrderHeader. Pour plus d'informations sur les déclencheurs qui déclenchent d'autres déclencheurs, consultez Déclencheurs imbriqués.

Le déclencheur DML uPurchaseOrderDetail exécute sur les tables TransactionHistory et PurchaseOrderHeader les mêmes actions que iPurchaseOrderDetail mais il les effectue lorsque la table PurchaseOrderDetail est mise à jour, pas lorsqu'elle reçoit une insertion.

Les déclencheurs DML iWorkOrder et uWorkOrder de la table Production.WorkOrder insèrent des données uniquement dans la table TransactionHistory.