AdventureWorks 示例数据库中的 DML 触发器

本主题介绍了 AdventureWorks2008R2 示例数据库中包括的 DML 触发器的几个示例。这些 DML 触发器设计为强制实施 Adventure Works Cycles 的业务规则并帮助保护其数据的完整性。

查看 SQL Server Management Studio 中每个触发器的文本

  1. 在对象资源管理器中,找到定义触发器的表,并展开**“触发器”**文件夹。

  2. 右键单击需要的触发器,再单击**“编写触发器脚本为”**。

在更新后设置字段

uSalesOrderHeader DML 触发器

表 Sales.SalesOrderHeader 包含 RevisionNumber 列来反映特定行(Status 字段除外)的更新次数。DML 触发器 uSalesOrderHeader 以 1 递增 RevisionNumber 字段,如果更新后该字段为空,则将其设置为 1。

uPurchaseOrderHeader DML 触发器对表 Purchasing.PurchaseOrderHeader 执行的操作应与 uSalesOrderHeader DML 触发器对表 Sales.SalesOrderHeader 执行的操作相同。

插入后填充表,再设置其他表中的字段

iPurchaseOrderDetail 和 uPurchaseOrderHeader DML 触发器

向 PurchaseOrderDetail 表中插入数据后,DML 触发器 iPurchaseOrderDetail 也将插入的部分数据插入 Production.TransactionHistory 表中。因为 PurchaseOrderDetail 中的多行文字形成 PurchaseOrderHeader 表中的一份采购订单,所以当 PurchaseOrderDetail 中插入行时必须更新 PurchaseOrderHeader 中的 Subtotal 字段。iPurchaseOrderDetail 触发器聚合 PurchaseOrderDetail 的 LineTotal 字段以形成特定的销售订单,并使用该聚合设置 PurchaseOrderHeader 的 Subtotal 字段。

注意,当 DML 触发器对 Purchasing.PurchaseOrderHeader 执行更新时,此操作将使 Purchasing.PurchaseOrderHeader 表中存在的 uPurchaseOrderHeader 更新触发器激发。有关导致其他触发器激发的触发器的详细信息,请参阅使用嵌套触发器

DML 触发器 uPurchaseOrderDetailTransactionHistoryPurchaseOrderHeader 表执行的操作与 iPurchaseOrderDetail 所执行的操作相似,不同的是前者在 PurchaseOrderDetail 表更新后执行操作,而不是在接收插入后执行操作。

Production.WorkOrder 表中的 DML 触发器 iWorkOrderuWorkOrder 只将数据插入到 TransactionHistory 表中。

请参阅

概念