Developer forum

Forum » Integration » Import Job failed: FOREIGN KEY constraint DW_FK_EcomOrderLines_EcomOrders

Import Job failed: FOREIGN KEY constraint DW_FK_EcomOrderLines_EcomOrders

Michael Sedlock
Reply

Hello,

We have an integration job from BC for Sales orders header and Lines. The job fails with this error below. 

Could anyone help identify why?

Import job failed: failed to move data from temporary table [dbo.EcomOrderLinesTempTableForBulkImport1] to main table [dbo.EcomOrderLines]. Exception: The INSERT statement conflicted with the FOREIGN KEY constraint "DW_FK_EcomOrderLines_EcomOrders".
 The conflict occurred in database "dukal.com", table "dbo.EcomOrders", column 'OrderId'. The statement has been terminated. Sql query: update [dbo].[EcomOrderLines] set [OrderLineType]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineType], [OrderLineProductNumber]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineProductNumber], [OrderLineParentLineId]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineParentLineId], [OrderLineOrderId]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineOrderId], [OrderLineQuantity]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineQuantity], [OrderLinePriceWithoutVAT]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLinePriceWithoutVAT], [OrderLineUnitPriceWithoutVAT]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitPriceWithoutVAT], [OrderLinePriceWithVAT]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLinePriceWithVAT], [OrderLineUnitPriceWithVAT]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitPriceWithVAT], [OrderLinePriceVAT]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLinePriceVAT], [OrderLineUnitPriceVAT]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitPriceVAT], [OrderLinePriceVATPercent]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLinePriceVATPercent], [OrderLineUnitPriceVATPercent]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitPriceVATPercent], [OrderLineProductName]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineProductName], [OrderLineUnitId]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitId], [OrderLineFieldValues]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineFieldValues], [OrderLineProductId]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineProductId], [OrderLineProductVariantId]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineProductVariantId] from [dbo].[EcomOrderLinesTempTableForBulkImport1] where [dbo].[EcomOrderLines].[OrderLineId]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineId] ; 
insert into [dbo].[EcomOrderLines] ([OrderLineType],[OrderLineProductNumber],[OrderLineId],[OrderLineParentLineId],[OrderLineOrderId],[OrderLineQuantity],[OrderLinePriceWithoutVAT],[OrderLineUnitPriceWithoutVAT],[OrderLinePriceWithVAT],[OrderLineUnitPriceWithVAT],[OrderLinePriceVAT],[OrderLineUnitPriceVAT],[OrderLinePriceVATPercent],[OrderLineUnitPriceVATPercent],[OrderLineProductName],[OrderLineUnitId],[OrderLineFieldValues],[OrderLineProductId],[OrderLineProductVariantId]) 
(select [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineType], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineProductNumber], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineId], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineParentLineId], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineOrderId], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineQuantity], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLinePriceWithoutVAT], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitPriceWithoutVAT], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLinePriceWithVAT], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitPriceWithVAT], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLinePriceVAT], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitPriceVAT], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLinePriceVATPercent], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitPriceVATPercent], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineProductName], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineUnitId], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineFieldValues], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineProductId], [dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineProductVariantId] from [dbo].[EcomOrderLinesTempTableForBulkImport1] left outer join [dbo].[EcomOrderLines] on [dbo].[EcomOrderLines].[OrderLineId]=[dbo].[EcomOrderLinesTempTableForBulkImport1].[OrderLineId] where [dbo].[EcomOrderLines].[OrderLineId] is null);  

 

Thank you in advance for your help.

 


Replies

 
Dmitriy Benyuk Dynamicweb Employee
Dmitriy Benyuk
Reply

Hi Michael,
it looks like your job is importing the SalesLines/EcomOrderLines first. So it tries to insert the order lines first while the EcomOrders don't exist for those order lines. Try to change/sort the table mappings in the job so it imports the EcomOrders first and then the EcomOrderLines.
There is a foreign key constrain from [EcomOrderLines].[OrderLineOrderId] to [EcomOrders] ([OrderId]).
BR, Dmitrij

 

You must be logged in to post in the forum