AdventureWorks
| Table Name: | Purchasing.PurchaseOrderHeader |
| Description: | General purchase order information. See PurchaseOrderDetail. |
| Primary Keys: | PurchaseOrderID |
| Field | Type | Defaults | Nulls? | Comments |
|---|---|---|---|---|
| PurchaseOrderID | int - Identity | None | No | Primary key. |
| RevisionNumber | tinyint | ((0)) | No | Incremental number to track changes to the purchase order over time. |
| Status | tinyint | ((1)) | No | Order current status. 1 = Pending; 2 = Approved; 3 = Rejected; 4 = Complete |
| EmployeeID | int | None | No | Employee who created the purchase order. Foreign key to Employee.EmployeeID. |
| VendorID | int | None | No | Vendor with whom the purchase order is placed. Foreign key to Vendor.VendorID. |
| ShipMethodID | int | None | No | Shipping method. Foreign key to ShipMethod.ShipMethodID. |
| OrderDate | datetime | (getdate()) | No | Purchase order creation date. |
| ShipDate | datetime | None | Yes | Estimated shipment date from the vendor. |
| SubTotal | money | ((0.00)) | No | Purchase order subtotal. Computed as SUM(PurchaseOrderDetail.LineTotal)for the appropriate PurchaseOrderID. |
| TaxAmt | money | ((0.00)) | No | Tax amount. |
| Freight | money | ((0.00)) | No | Shipping cost. |
| TotalDue | money | None | No | Total due to vendor. Computed as Subtotal + TaxAmt + Freight. |
| ModifiedDate | datetime | (getdate()) | No | Date and time the record was last updated. |
| Index | Clustered? | Unique? | Fields |
|---|---|---|---|
| PK_PurchaseOrderHeader_PurchaseOrderID | Yes | Yes | PurchaseOrderID |
| IX_PurchaseOrderHeader_VendorID | No | No | VendorID |
| IX_PurchaseOrderHeader_EmployeeID | No | No | EmployeeID |
| Check Constraint | Text |
|---|---|
| CK_PurchaseOrderHeader_Status | ([Status]>=(1) AND [Status]<=(4)) |
| CK_PurchaseOrderHeader_ShipDate | ([ShipDate]>=[OrderDate] OR [ShipDate] IS NULL) |
| CK_PurchaseOrderHeader_SubTotal | ([SubTotal]>=(0.00)) |
| CK_PurchaseOrderHeader_TaxAmt | ([TaxAmt]>=(0.00)) |
| CK_PurchaseOrderHeader_Freight | ([Freight]>=(0.00)) |
| Internal Foreign Key Constraint | Affected Field | Source Table |
|---|---|---|
| FK_PurchaseOrderHeader_Employee_EmployeeID | EmployeeID | HumanResources.Employee |
| FK_PurchaseOrderHeader_ShipMethod_ShipMethodID | ShipMethodID | Purchasing.ShipMethod |
| FK_PurchaseOrderHeader_Vendor_VendorID | VendorID | Purchasing.Vendor |
| Primary Key as Foreign Key Constraint | Affected Table | Affected Field |
|---|---|---|
| FK_PurchaseOrderDetail_PurchaseOrderHeader_PurchaseOrderID | Purchasing.PurchaseOrderDetail | PurchaseOrderID |
| Trigger | Text |
|---|---|
| uPurchaseOrderHeader | CREATE TRIGGER [Purchasing].[uPurchaseOrderHeader] ON [Purchasing].[PurchaseOrderHeader] AFTER UPDATE AS BEGIN DECLARE @Count int; SET @Count = @@ROWCOUNT; IF @Count = 0 RETURN; SET NOCOUNT ON; BEGIN TRY IF NOT UPDATE([Status]) BEGIN UPDATE [Purchasing].[PurchaseOrderHeader] SET [Purchasing].[PurchaseOrderHeader].[RevisionNumber] = [Purchasing].[PurchaseOrderHeader].[RevisionNumber] + 1 WHERE [Purchasing].[PurchaseOrderHeader].[PurchaseOrderID] IN (SELECT inserted.[PurchaseOrderID] FROM inserted); END; END TRY BEGIN CATCH EXECUTE [dbo].[uspPrintError]; IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRANSACTION; END EXECUTE [dbo].[uspLogError]; END CATCH; END; |