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

更新日期: 2006 年 4 月 14 日

本主题介绍了 AdventureWorks 示例数据库中包括的 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 触发器聚合 PurchaseOrderDetailLineTotal 字段以形成特定的销售订单,并使用该聚合设置 PurchaseOrderHeaderSubtotal 字段。

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

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

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

请参阅

概念

了解 DML 触发器

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2006 年 4 月 14 日

已更改的内容:
  • 删除了对 AdventureWorks 示例数据库的 SQL Server 2005 Service Pack 1 版本以外的触发器的引用。