Difference between revisions of "Sales.SalesOrderDetail (table)"
| Line 2: | Line 2: | ||
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" | {| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" | ||
| − | |- | + | |- valign="top" |
| '''Table | | '''Table | ||
| Sales.SalesOrderDetail | | Sales.SalesOrderDetail | ||
| Line 8: | Line 8: | ||
| '''Description | | '''Description | ||
| Individual products associated with a specific sales order. See SalesOrderHeader. | | Individual products associated with a specific sales order. See SalesOrderHeader. | ||
| − | |||
|} | |} | ||
| − | |||
=== Columns === | === Columns === | ||
| Line 20: | Line 18: | ||
| '''Default | | '''Default | ||
| '''Description | | '''Description | ||
| − | + | ||
|- valign="top" | |- valign="top" | ||
| SalesOrderID | | SalesOrderID | ||
| Line 94: | Line 92: | ||
| '''Primary Key | | '''Primary Key | ||
| '''Columns | | '''Columns | ||
| − | |- | + | |- valign="top" |
| PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID | | PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID | ||
| SalesOrderID, SalesOrderDetailID | | SalesOrderID, SalesOrderDetailID | ||
| Line 105: | Line 103: | ||
| '''Type | | '''Type | ||
| '''Columns | | '''Columns | ||
| − | + | ||
| − | |- | + | |- valign="top" |
| AK_SalesOrderDetail_rowguid | | AK_SalesOrderDetail_rowguid | ||
| Unique | | Unique | ||
| rowguid | | rowguid | ||
| − | |- | + | |- valign="top" |
| IX_SalesOrderDetail_ProductID | | IX_SalesOrderDetail_ProductID | ||
| | | | ||
| Line 122: | Line 120: | ||
| '''Expression | | '''Expression | ||
| '''Description | | '''Description | ||
| − | + | ||
| − | |- | + | |- valign="top" |
| CK_SalesOrderDetail_OrderQty | | CK_SalesOrderDetail_OrderQty | ||
| ([OrderQty]>(0)) | | ([OrderQty]>(0)) | ||
| Check constraint [OrderQty] > (0) | | Check constraint [OrderQty] > (0) | ||
| − | |- | + | |- valign="top" |
| CK_SalesOrderDetail_UnitPrice | | CK_SalesOrderDetail_UnitPrice | ||
| ([UnitPrice]>=(0.00)) | | ([UnitPrice]>=(0.00)) | ||
| Check constraint [UnitPrice] >= (0.00) | | Check constraint [UnitPrice] >= (0.00) | ||
| − | |- | + | |- valign="top" |
| CK_SalesOrderDetail_UnitPriceDiscount | | CK_SalesOrderDetail_UnitPriceDiscount | ||
| ([UnitPriceDiscount]>=(0.00)) | | ([UnitPriceDiscount]>=(0.00)) | ||
| Line 143: | Line 141: | ||
| '''Column | | '''Column | ||
| '''Referenced Column | | '''Referenced Column | ||
| − | + | ||
| − | |- | + | |- valign="top" |
| [[Sales.SalesOrderHeader_(table)|Sales.SalesOrderHeader]] | | [[Sales.SalesOrderHeader_(table)|Sales.SalesOrderHeader]] | ||
| SalesOrderID | | SalesOrderID | ||
| SalesOrderID | | SalesOrderID | ||
| − | |- | + | |- valign="top" |
| [[Sales.SpecialOfferProduct_(table)|Sales.SpecialOfferProduct]] | | [[Sales.SpecialOfferProduct_(table)|Sales.SpecialOfferProduct]] | ||
| SpecialOfferID | | SpecialOfferID | ||
| Line 157: | Line 155: | ||
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" | {| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" | ||
|- style="background:silver" | |- style="background:silver" | ||
| − | | ''' | + | | '''Trigger |
| '''Type | | '''Type | ||
| − | + | ||
| − | |- | + | |- valign="top" |
| iduSalesOrderDetail | | iduSalesOrderDetail | ||
| ON INSERT UPDATE DELETE | | ON INSERT UPDATE DELETE | ||
|} | |} | ||
| − | + | ==== Trigger iduSalesOrderDetail ==== | |
<pre> | <pre> | ||
CREATE TRIGGER [Sales].[iduSalesOrderDetail] ON [Sales].[SalesOrderDetail] | CREATE TRIGGER [Sales].[iduSalesOrderDetail] ON [Sales].[SalesOrderDetail] | ||
| Line 247: | Line 245: | ||
END; | END; | ||
</pre> | </pre> | ||
| − | + | ||
=== References === | === References === | ||
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" | {| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" | ||
| Line 258: | Line 256: | ||
| '''Child Object | | '''Child Object | ||
| − | |- | + | |- valign="top" |
| Schema | | Schema | ||
| Schema | | Schema | ||
| Line 265: | Line 263: | ||
| | | | ||
| | | | ||
| − | |- | + | |- valign="top" |
| Insert | | Insert | ||
| Table | | Table | ||
| Line 272: | Line 270: | ||
| Trigger | | Trigger | ||
| iduSalesOrderDetail | | iduSalesOrderDetail | ||
| − | |- | + | |- valign="top" |
| Update | | Update | ||
| Table | | Table | ||
| Line 279: | Line 277: | ||
| Trigger | | Trigger | ||
| iduSalesOrderDetail | | iduSalesOrderDetail | ||
| − | |- | + | |- valign="top" |
| Select | | Select | ||
| Table | | Table | ||
| Line 286: | Line 284: | ||
| Trigger | | Trigger | ||
| iduSalesOrderDetail | | iduSalesOrderDetail | ||
| − | |- | + | |- valign="top" |
| Select | | Select | ||
| Table | | Table | ||
| Line 293: | Line 291: | ||
| Trigger | | Trigger | ||
| iduSalesOrderDetail | | iduSalesOrderDetail | ||
| − | |- | + | |- valign="top" |
| Update | | Update | ||
| Table | | Table | ||
| Line 300: | Line 298: | ||
| Trigger | | Trigger | ||
| iduSalesOrderDetail | | iduSalesOrderDetail | ||
| − | |- | + | |- valign="top" |
| Execute | | Execute | ||
| Procedure | | Procedure | ||
| Line 307: | Line 305: | ||
| Trigger | | Trigger | ||
| iduSalesOrderDetail | | iduSalesOrderDetail | ||
| − | |- | + | |- valign="top" |
| Execute | | Execute | ||
| Procedure | | Procedure | ||
| Line 326: | Line 324: | ||
| '''Child Object | | '''Child Object | ||
| − | |- | + | |- valign="top" |
| Select | | Select | ||
| Table | | Table | ||
Latest revision as of 23:17, 23 June 2010
Contents
wikibot[edit]
| Table | Sales.SalesOrderDetail |
| Description | Individual products associated with a specific sales order. See SalesOrderHeader. |
Columns[edit]
| Column | Data Type | Nullable | Default | Description |
| SalesOrderID | int | not null | Primary key. Foreign key to SalesOrderHeader.SalesOrderID. | |
| SalesOrderDetailID | int | not null | Primary key. One incremental unique number per product sold. | |
| CarrierTrackingNumber | nvarchar(25) | null | Shipment tracking number supplied by the shipper. | |
| OrderQty | smallint | not null | Quantity ordered per product. | |
| ProductID | int | not null | Product sold to customer. Foreign key to Product.ProductID. | |
| SpecialOfferID | int | not null | Promotional code. Foreign key to SpecialOffer.SpecialOfferID. | |
| UnitPrice | money | not null | Selling price of a single product. | |
| UnitPriceDiscount | money | not null | ((0.0)) | Discount amount. |
| LineTotal | Per product subtotal. Computed as UnitPrice * (1 - UnitPriceDiscount) * OrderQty. | |||
| rowguid | uniqueidentifier | not null | (newid()) | ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample. |
| ModifiedDate | datetime | not null | (getdate()) | Date and time the record was last updated. |
Primary Key[edit]
| Primary Key | Columns |
| PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID | SalesOrderID, SalesOrderDetailID |
Indexes[edit]
| Index | Type | Columns |
| AK_SalesOrderDetail_rowguid | Unique | rowguid |
| IX_SalesOrderDetail_ProductID | ProductID |
Check Constraints[edit]
| Check Constraint | Expression | Description |
| CK_SalesOrderDetail_OrderQty | ([OrderQty]>(0)) | Check constraint [OrderQty] > (0) |
| CK_SalesOrderDetail_UnitPrice | ([UnitPrice]>=(0.00)) | Check constraint [UnitPrice] >= (0.00) |
| CK_SalesOrderDetail_UnitPriceDiscount | ([UnitPriceDiscount]>=(0.00)) | Check constraint [UnitPriceDiscount] >= (0.00) |
Foreign Keys[edit]
| Relation | Column | Referenced Column |
| Sales.SalesOrderHeader | SalesOrderID | SalesOrderID |
| Sales.SpecialOfferProduct | SpecialOfferID | SpecialOfferID |
Triggers[edit]
| Trigger | Type |
| iduSalesOrderDetail | ON INSERT UPDATE DELETE |
Trigger iduSalesOrderDetail[edit]
CREATE TRIGGER [Sales].[iduSalesOrderDetail] ON [Sales].[SalesOrderDetail]
AFTER INSERT, DELETE, UPDATE AS
BEGIN
DECLARE @Count int;
SET @Count = @@ROWCOUNT;
IF @Count = 0
RETURN;
SET NOCOUNT ON;
BEGIN TRY
-- If inserting or updating these columns
IF UPDATE([ProductID]) OR UPDATE([OrderQty]) OR UPDATE([UnitPrice]) OR UPDATE([UnitPriceDiscount])
-- Insert record into TransactionHistory
BEGIN
INSERT INTO [Production].[TransactionHistory]
([ProductID]
,[ReferenceOrderID]
,[ReferenceOrderLineID]
,[TransactionType]
,[TransactionDate]
,[Quantity]
,[ActualCost])
SELECT
inserted.[ProductID]
,inserted.[SalesOrderID]
,inserted.[SalesOrderDetailID]
,'S'
,GETDATE()
,inserted.[OrderQty]
,inserted.[UnitPrice]
FROM inserted
INNER JOIN [Sales].[SalesOrderHeader]
ON inserted.[SalesOrderID] = [Sales].[SalesOrderHeader].[SalesOrderID];
UPDATE [Sales].[Individual]
SET [Demographics].modify('declare default element namespace
"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey";
replace value of (/IndividualSurvey/TotalPurchaseYTD)[1]
with data(/IndividualSurvey/TotalPurchaseYTD)[1] + sql:column ("inserted.LineTotal")')
FROM inserted
INNER JOIN [Sales].[SalesOrderHeader]
ON inserted.[SalesOrderID] = [Sales].[SalesOrderHeader].[SalesOrderID]
WHERE [Sales].[SalesOrderHeader].[CustomerID] = [Sales].[Individual].[CustomerID];
END;
-- Update SubTotal in SalesOrderHeader record. Note that this causes the
-- SalesOrderHeader trigger to fire which will update the RevisionNumber.
UPDATE [Sales].[SalesOrderHeader]
SET [Sales].[SalesOrderHeader].[SubTotal] =
(SELECT SUM([Sales].[SalesOrderDetail].[LineTotal])
FROM [Sales].[SalesOrderDetail]
WHERE [Sales].[SalesOrderHeader].[SalesOrderID] = [Sales].[SalesOrderDetail].[SalesOrderID])
WHERE [Sales].[SalesOrderHeader].[SalesOrderID] IN (SELECT inserted.[SalesOrderID] FROM inserted);
UPDATE [Sales].[Individual]
SET [Demographics].modify('declare default element namespace
"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey";
replace value of (/IndividualSurvey/TotalPurchaseYTD)[1]
with data(/IndividualSurvey/TotalPurchaseYTD)[1] - sql:column("deleted.LineTotal")')
FROM deleted
INNER JOIN [Sales].[SalesOrderHeader]
ON deleted.[SalesOrderID] = [Sales].[SalesOrderHeader].[SalesOrderID]
WHERE [Sales].[SalesOrderHeader].[CustomerID] = [Sales].[Individual].[CustomerID];
END TRY
BEGIN CATCH
EXECUTE [dbo].[uspPrintError];
-- Rollback any active or uncommittable transactions before
-- inserting information in the ErrorLog
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END
EXECUTE [dbo].[uspLogError];
END CATCH;
END;
References[edit]
| Dependency Type | Object Type | Referenced Object | Child Type | Child Object |
| Schema | Schema | Sales | ||
| Insert | Table | Production.TransactionHistory | Trigger | iduSalesOrderDetail |
| Update | Table | Sales.Individual | Trigger | iduSalesOrderDetail |
| Select | Table | Sales.SalesOrderDetail | Trigger | iduSalesOrderDetail |
| Select | Table | Sales.SalesOrderHeader | Trigger | iduSalesOrderDetail |
| Update | Table | Sales.SalesOrderHeader | Trigger | iduSalesOrderDetail |
| Execute | Procedure | dbo.uspLogError | Trigger | iduSalesOrderDetail |
| Execute | Procedure | dbo.uspPrintError | Trigger | iduSalesOrderDetail |
Dependencies[edit]
| Reference Type | Object Type | Referencing Object | Child Type | Child Object |
| Select | Table | Sales.SalesOrderDetail | Trigger | iduSalesOrderDetail |
automatically generated[edit]
| Table | Sales.SalesOrderDetail |
| Description | Individual products associated with a specific sales order. See SalesOrderHeader. |
| Column | Data Type | Nullable | Default | Description / PK / Index |
| SalesOrderID | int | not null | Primary key. Foreign key to SalesOrderHeader.SalesOrderID. PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID | |
| SalesOrderDetailID | int | not null | Primary key. One incremental unique number per product sold. PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID | |
| CarrierTrackingNumber | nvarchar(25) | null | Shipment tracking number supplied by the shipper. | |
| OrderQty | smallint | not null | Quantity ordered per product. | |
| ProductID | int | not null | Product sold to customer. Foreign key to Product.ProductID. IX_SalesOrderDetail_ProductID | |
| SpecialOfferID | int | not null | Promotional code. Foreign key to SpecialOffer.SpecialOfferID. | |
| UnitPrice | money | not null | Selling price of a single product. | |
| UnitPriceDiscount | money | not null | (0.0) | Discount amount. |
| LineTotal | Per product subtotal. Computed as UnitPrice * (1 - UnitPriceDiscount) * OrderQty. | |||
| rowguid | uniqueidentifier | not null | (NEWID()) | ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample. AK_SalesOrderDetail_rowguid |
| ModifiedDate | datetime | not null | (GETDATE()) | Date and time the record was last updated. |
| Relation | Column | Referenced Column |
| Sales.SalesOrderHeader | SalesOrderID | SalesOrderID |
| Sales.SpecialOfferProduct | SpecialOfferID | SpecialOfferID |
| Triggers | Type |
| iduSalesOrderDetail | ON INSERT UPDATE DELETE |
| Dependency Type | Object Type | Referenced Object | Child Type | Child Object |
| Schema | Schema | Sales | ||
| Insert | Table | Production.TransactionHistory | Trigger | iduSalesOrderDetail |
| Update | Table | Sales.Individual | Trigger | iduSalesOrderDetail |
| Select | Table | Sales.SalesOrderDetail | Trigger | iduSalesOrderDetail |
| Select | Table | Sales.SalesOrderHeader | Trigger | iduSalesOrderDetail |
| Update | Table | Sales.SalesOrderHeader | Trigger | iduSalesOrderDetail |
| Execute | Procedure | dbo.uspLogError | Trigger | iduSalesOrderDetail |
| Execute | Procedure | dbo.uspPrintError | Trigger | iduSalesOrderDetail |
| Reference Type | Object Type | Referencing Object | Child Type | Child Object |
| Select | Table | Sales.SalesOrderDetail | Trigger | iduSalesOrderDetail |