다음을 통해 공유


AdventureWorks 예제 데이터베이스의 DML 트리거

이 항목에서는 AdventureWorks 예제 데이터베이스에 포함되어 있는 여러 가지 DML 트리거 예제에 대해 설명합니다. 이러한 DML 트리거는 Adventure Works Cycles의 비즈니스 규칙을 강제 적용하고 해당 데이터의 무결성을 보호할 수 있도록 합니다.

SQL Server Management Studio에서 각 트리거의 텍스트를 보려면

  1. 개체 탐색기에서 트리거가 정의되어 있는 테이블을 찾은 다음 트리거 폴더를 확장합니다.

  2. 원하는 트리거를 마우스 오른쪽 단추로 클릭한 다음 트리거 스크립팅을 클릭합니다.

업데이트 후 필드 설정

uSalesOrderHeader DML 트리거

Sales.SalesOrderHeader 테이블에는 Status 필드를 제외하고 특정 행이 업데이트된 횟수를 반영하는 RevisionNumber 열이 있습니다. DML 트리거 uSalesOrderHeader는 업데이트 후 RevisionNumber 필드를 1씩 늘리거나 Null인 경우 1로 설정합니다.

uPurchaseOrderHeader DML 트리거는 uSalesOrderHeader DML 트리거가 Sales.SalesOrderHeader 테이블에서 수행하는 것과 같은 동작을 Purchasing.PurchaseOrderHeader 테이블에 대해 수행합니다.

삽입 후 테이블을 채운 다음 다른 테이블에서 필드 설정

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 트리거 uPurchaseOrderDetailiPurchaseOrderDetail이 수행하는 것과 같은 동작을 TransactionHistoryPurchaseOrderHeader 테이블에 대해 수행하지만 삽입을 받을 때 대신 PurchaseOrderDetail 테이블이 업데이트될 때 해당 작업을 수행합니다.

Production.WorkOrder 테이블의 DML 트리거 iWorkOrderuWorkOrderTransactionHistory 테이블에 대해서만 데이터를 삽입합니다.

참고 항목

개념