HelloThankyou for your replies.I am aware about the cascading delete configuration option. However, we purposely do not have this enabled due to the fact it can be dangerous. Therefore, I need a method to manually perform the cascade deletes.I have tried different methods, and have a procedure that performs the work. But I was hoping that it could be done in a single statement (like the previous posted example). That statement would work, but only if all the child tables had entries.This is what I have so far:CREATE PROCEDURE [oms].[Order_DeleteOrder] ( @OrderID int = NULL, @OriginatorID int = NULL)ASSET NOCOUNT ONDECLARE @IDs TABLE( OrderLineID int, PartOrderID int, OrderHeaderID int, OrderID int)INSERT INTO @IDs (OrderLineID, PartOrderID, OrderHeaderID, OrderID)SELECT ol.OrderLineID, po.PartOrderID, oh.OrderHeaderID, oi.OrderID FROM oms.LineItem liRIGHT JOIN oms.OrderLine ol ON ol.OrderLineID = li.OrderLineIDRIGHT JOIN oms.PartOrder po ON po.PartOrderID = ol.PartOrderIDRIGHT JOIN oms.OrderHeader oh ON oh.OrderHeaderID = po.OrderHeaderIDRIGHT JOIN oms.OrderIdentifier oi ON oh.OrderID = oi.OrderIDWHERE oi.OrderID = @OrderID OR oi.OriginatorPartyID = @OriginatorIDDELETE FROM oms.LineItemWHERE OrderLineID IN (SELECT OrderLineID FROM @IDs)DELETE FROM oms.OrderLineWHERE OrderLineID IN (SELECT OrderLineID FROM @IDs)DELETE FROM oms.PartOrderWHERE PartOrderID IN (SELECT PartOrderID FROM @IDs)DELETE FROM oms.OrderHeaderWHERE OrderHeaderID IN (SELECT OrderHeaderID FROM @IDs)DELETE FROM oms.OrderIdentifierWHERE OrderID IN (SELECT OrderID FROM @IDs)
Hearty head pats