ScrewTurn Wiki

Edit

wikibot

TableSales.SalesOrderDetail
DescriptionIndividual products associated with a specific sales order. See SalesOrderHeader.

Edit

Columns

ColumnData TypeNullableDefaultDescription
SalesOrderIDintnot null Primary key. Foreign key to SalesOrderHeader.SalesOrderID.
SalesOrderDetailIDintnot null Primary key. One incremental unique number per product sold.
CarrierTrackingNumbernvarchar(25)null Shipment tracking number supplied by the shipper.
OrderQtysmallintnot null Quantity ordered per product.
ProductIDintnot null Product sold to customer. Foreign key to Product.ProductID.
SpecialOfferIDintnot null Promotional code. Foreign key to SpecialOffer.SpecialOfferID.
UnitPricemoneynot null Selling price of a single product.
UnitPriceDiscountmoneynot null((0.0))Discount amount.
LineTotal   Per product subtotal. Computed as UnitPrice * (1 - UnitPriceDiscount) * OrderQty.
rowguiduniqueidentifiernot null(newid())ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
ModifiedDatedatetimenot null(getdate())Date and time the record was last updated.

Edit

Primary Key

Primary KeyColumns
PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailIDSalesOrderID, SalesOrderDetailID

Edit

Indexes

IndexTypeColumns
AK_SalesOrderDetail_rowguidUniquerowguid
IX_SalesOrderDetail_ProductID ProductID

Edit

Check Constraints

Check ConstraintExpressionDescription
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)

Edit

Foreign Keys

RelationColumnReferenced Column
Sales.SalesOrderHeaderSalesOrderIDSalesOrderID
Sales.SpecialOfferProductSpecialOfferIDSpecialOfferID

Edit

Triggers

TriggerType
iduSalesOrderDetailON INSERT UPDATE DELETE

Edit

Trigger iduSalesOrderDetail

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;

Edit

References

Dependency TypeObject TypeReferenced ObjectChild TypeChild Object
SchemaSchemaSales  
InsertTableProduction.TransactionHistoryTriggeriduSalesOrderDetail
UpdateTableSales.IndividualTriggeriduSalesOrderDetail
SelectTableSales.SalesOrderDetailTriggeriduSalesOrderDetail
SelectTableSales.SalesOrderHeaderTriggeriduSalesOrderDetail
UpdateTableSales.SalesOrderHeaderTriggeriduSalesOrderDetail
ExecuteProceduredbo.uspLogErrorTriggeriduSalesOrderDetail
ExecuteProceduredbo.uspPrintErrorTriggeriduSalesOrderDetail

Edit

Dependencies

Reference TypeObject TypeReferencing ObjectChild TypeChild Object
SelectTableSales.SalesOrderDetailTriggeriduSalesOrderDetail

Edit

automatically generated

TableSales.SalesOrderDetail
DescriptionIndividual products associated with a specific sales order. See SalesOrderHeader.

ColumnData TypeNullableDefaultDescription / PK / Index
SalesOrderIDintnot null Primary key. Foreign key to SalesOrderHeader.SalesOrderID.
PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID
SalesOrderDetailIDintnot null Primary key. One incremental unique number per product sold.
PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID
CarrierTrackingNumbernvarchar(25)null Shipment tracking number supplied by the shipper.
OrderQtysmallintnot null Quantity ordered per product.
ProductIDintnot null Product sold to customer. Foreign key to Product.ProductID.
IX_SalesOrderDetail_ProductID
SpecialOfferIDintnot null Promotional code. Foreign key to SpecialOffer.SpecialOfferID.
UnitPricemoneynot null Selling price of a single product.
UnitPriceDiscountmoneynot null(0.0)Discount amount.
LineTotal   Per product subtotal. Computed as UnitPrice * (1 - UnitPriceDiscount) * OrderQty.
rowguiduniqueidentifiernot null(NEWID())ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
AK_SalesOrderDetail_rowguid
ModifiedDatedatetimenot null(GETDATE())Date and time the record was last updated.



RelationColumnReferenced Column
Sales.SalesOrderHeaderSalesOrderIDSalesOrderID
Sales.SpecialOfferProductSpecialOfferIDSpecialOfferID

TriggersType
iduSalesOrderDetailON INSERT UPDATE DELETE

Dependency TypeObject TypeReferenced ObjectChild TypeChild Object
SchemaSchemaSales
InsertTableProduction.TransactionHistoryTriggeriduSalesOrderDetail
UpdateTableSales.IndividualTriggeriduSalesOrderDetail
SelectTableSales.SalesOrderDetailTriggeriduSalesOrderDetail
SelectTableSales.SalesOrderHeaderTriggeriduSalesOrderDetail
UpdateTableSales.SalesOrderHeaderTriggeriduSalesOrderDetail
ExecuteProceduredbo.uspLogErrorTriggeriduSalesOrderDetail
ExecuteProceduredbo.uspPrintErrorTriggeriduSalesOrderDetail

Reference TypeObject TypeReferencing ObjectChild TypeChild Object
SelectTableSales.SalesOrderDetailTriggeriduSalesOrderDetail

ScrewTurn Wiki version 2.0.36. Some of the icons created by FamFamFam.