Tech Junkie Blog - Real World Tutorials, Happy Coding!: SQL Server: The DELETE statement conflicted with the REFERENCE constraint "FK_Order_Details_Products". The conflict occurred in database "Northwind", table "dbo.Order Details", column 'ProductID'.

Friday, July 25, 2014

SQL Server: The DELETE statement conflicted with the REFERENCE constraint "FK_Order_Details_Products". The conflict occurred in database "Northwind", table "dbo.Order Details", column 'ProductID'.

The DELETE statement conflicted with the REFERENCE constraint "FK_Order_Details_Products". The conflict occurred in database "Northwind", table "dbo.Order Details", column 'ProductID'. The statement has been terminated. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Data.SqlClient.SqlException: The DELETE statement conflicted with the REFERENCE constraint "FK_Order_Details_Products". The conflict occurred in database "Northwind", table "dbo.Order Details", column 'ProductID'. The statement has been terminated. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [SqlException (0x80131904): The DELETE statement conflicted with the REFERENCE constraint "FK_Order_Details_Products". The conflict occurred in database "Northwind", table "dbo.Order Details", column 'ProductID'. The statement has been terminated.] System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1789294 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5340642 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +244 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1691 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +275 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +1421 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +177 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +208 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +163 System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand command, DataSourceOperation operation) +378 System.Web.UI.WebControls.SqlDataSourceView.ExecuteDelete(IDictionary keys, IDictionary oldValues) +568 System.Web.UI.DataSourceView.Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback) +84 System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow row, Int32 rowIndex) +930 System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +974 System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +201 System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +9703566 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724 Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34009



This error occurs when you tried to use the default "DeleteStatement" generated by SQL Builder in Visual Studio 2013 for the "Products" table in the "Northwind" database.  What it says basically is that the query is trying to delete a product that is being reference by another table call the "Order Details" table.  The solution to the problem is to delete the child records in the "Order Details" table before you delete the record in the "Products" table.
In this example the scenario is that we added a SqlDataSource control to our .aspx page and we used the auto-generated DELETE statements generated by Visual Studio. We click on the "Delete" link on our GridView and received the above error.
GridView delete link

If you select the following checkboxes, you will get auto generated SQL statements for INSERT, UPDATE, and DELETE.  The problem is the DELETE statement that were generated by Visual Studio only deletes the record in the Products table.

Generate INSERT, UPDATE, and DELETE statements


This is the code that is being generated:

DeleteCommand="DELETE FROM [Products] WHERE [ProductID] = @ProductID" 

If you look at the Order Details table in SQL Server Studio you will see that the ProductID field in the Order Details table is referencing the ProductID in the Products table

Foreign Key Relationships


The easiest way to fix this issue is to modify the delete statement that was generated by Visual Studio.  What you want to do is delete the records from the lowest child level.  Since the "Order Details"  table is referencing the "Products" table we want to delete all the records associated with the record in the "Order Details" table first.

So here is the original DELETE statement


DeleteCommand="DELETE FROM [Products] WHERE [ProductID] = @ProductID" 


We want to change it to
DeleteCommand="DELETE FROM [Order Details] WHERE [ProductID] = @ProductID; DELETE FROM [Products] WHERE [ProductID] = @ProductID"

Now you can delete the "Products" record with no issue using the SqlDataSource control and a GridView control.  There are more elegant ways of resolving this issue, however since this is a blog, we will implement the sitcom 30 minutes solution.  The main purpose of this blog is to make the point that the reason the error occur is because there's a foreign key constraint violation.  Which is a good thing, not all exceptions are a bad thing.  You just have to handle it.




61 comments:

  1. Thanks, this is generally helpful.
    Still, I followed step-by-step your method in this
    dot net online training
    .net online training hyderabad

    ReplyDelete
  2. PG SLOT มีเกมหลากหลายให ้เลือก พรอ้ มกราฟฟิกแอนนเิมชนั่ สวยงามทสี่ ดุ ในยคุ นี้แจ็คพอตแตกง่าย pgslot โปรโมชนั่ พเิศษส าหรับทงั้สมาชก เกา่ และสมาชกิ ใหม่ ระบบฝาก-ถอนเงินออโต ้เงินเข ้าเร็วทันใจมีแอดมิ ดูแลตลอด 24 ชวั่ โมง ต ้องที่ pgslot.bid มั่นคงจ่ายจริง ไม่ว่าคุณจะถอนเงิ มากมายเท่าไหร่ ทางเว็บจ่ายเต็มไม่มีหัก pgslot ปั่นง่ายแตกง่าย

    pg slot ผู ้ให ้บริการเว็บตรง ที่แตกง่ายที่สุด ปั่นสนุก ฝากเงินรับเครดิตฟร สูงสุด 15000 บาท สมัคร พีจีสล็อต หรือ PGSLOT กับเราเพื่อความมั่นคงของคุณเอง.

    ReplyDelete
  3. แจกสนั่น รับความสุขทางการเงินกันแบบง่ายๆที่เว็บไซต์ PG เว็บไซต์ยอดนิยมอันดับหนึ่งในประเทศไทยที่มาพร้อมกับเกมออนไลน์มากมายที่พร้อมจะส่งเงินทองให้กับนักเดิมพันถึงมือผ่านเกมออนไลน์ที่ถูกคัดสรรมาอย่างดีมีคุณภาพ เกมทุกเกมสามารถรองรับการเล่นผ่าน Computer PC HTML5 MacOS รวมไปถึงมือถือสมาร์ทโฟนทุกรุ่นทุกระบบปฏิบัติการทั้งระบบของ iOS และ Android

    ReplyDelete
  4. รับเงินกันแบบง่ายๆ อยากรวย อยากมีเงินใช้ เข้ามาเลยที่เว็บไซต์พีจีสล็อต เว็บไซต์ที่มาพร้อมกับเกมออนไลน์มากมายหลากหลายชนิด ให้นักเดิมพันได้เลือกเล่นกันแบบไม่มีเบื่อ มีทั้งแนวการต่อสู้ แนวการผจญภัย แนวแฟนตาซี แนวด้านกีฬาและอื่นๆอีกมากมาย สนใจอยากร่วมเป็นสมาชิกของ PG วันนี้ รับโบนัสกันแบบฟรีๆไปเลยหนึ่งร้อยเปอร์เซ็นต์

    ReplyDelete
  5. พบกับความบันเทิงเกมสล็อตออนไลน์ในรูปแบบบนมือถือ เว็บ MEGAGAME เว็บเกมสล็อตออนไลน์ เล่นง่ายได้ทุกที่ กำลังได้รับความนิยมเป็นอย่างมากสำหรับเกมสล็อตที่สามารถทำเงินได้ง่ายๆ เพียงคุณเลือกเดิมพันไปกับเกมสล็อตของเรา ก็สามารถร่วมลุ้นเงินแจ็คพอตที่ให้รางวัลสูงที่สุดได้อีกด้วย

    ReplyDelete
  6. Get more money for a very high investment. If you want to get a promotion that is very worthwhile, you can deposit 1,000 baht in it and you will สล็อตแตกง่าย

    ReplyDelete
  7. เกม pg slot สัญลักษณ์ในเกมต่างๆ สัญลักษณ์ใน เกม Pg Slot ต้องรู้ก่อนจะเล่น ปี2021 เกม Pg Slot วันนี้เราจะพามารู้จักกับสิ่งสำคัญเกี่ยวกับปุ่มต่างๆ ในเกม pgslot ที่คุณต้องรู้ก่อนเล่นเกมนั่นเอง อีกด้วย

    ReplyDelete
  8. Which slots are the 1st class gambling service provider in Thailand with a wide range of gambling options to choose from in a comprehensive way Guarantee that you come to gamble with us and you won't be disappointed. สมัครสล็อตเว็บตรง

    ReplyDelete
  9. slots From what I used to be worried about, it turns into know about the game, agree to play to get the profit from the hope Plus, the slot game itself is not เกมสล็อต

    ReplyDelete
  10. clear bet sizes And after that, the game's software doesn't know that. have deposited and paid those spins or if received as a gift as a gift bag สมัครสล็อตเว็บตรง

    ReplyDelete
  11. more than 10 years, with good promotion, free credit, real money, accepted by the casino. All over the world with a fully automatic deposit สล็อต pg

    ReplyDelete
  12. bonus for new players or regular promotions. One of the most common misconceptions about bonuses is gambling rules. Players need to wager the bonus money received several times before they can be withdrawn. สล็อตแตกง่าย 2022

    ReplyDelete
  13. The more you play, the higher your chances. to get big bonus prize money from us to hold คาสิโนตรง

    ReplyDelete
  14. pg slot true wallet ฝากถอนไม่มีขั้นต่ำ ง่ายๆ ด้วยระบบออโต้ผ่าน True wallet สะดวกสบาย ทุนน้อยก็สามารถเล่นได้ รวดเร็วทันใจด้วยระบบออโต้ pg เงินเข้าภายใน 30 วินาที ปลอดภัย 100 %

    ReplyDelete
  15. Feng Shui itself. which the mobile phone wallpaper that will give an example can be said as follows
    Ganesh-png เว็บตรง

    ReplyDelete
  16. Whether the gambler wants to play any type of slots This website has To have come คาสิโน Auto

    ReplyDelete
  17. ambbet.game เปิดมิติแห่งความสนุกสนานและใหม่ล่าสุดที่พร้อมให้บริการตลอด 24 ชั่วโมง สามารถเดิมพันด้วยทุน 1 บาท สำหรับเกมยอดนิยม อย่าง สล้อตออนไลน์ โดยปัจจุบันนี้ เลือกาสมัคร และเล่นเกมได้เลย เราพร้อมดูแล และบริการระดับพรีเมี่ยมเลยจ้า

    ReplyDelete
  18. Online slots, therefore, its speed and ease of use are greatly enhanced by The times in the past cannot be compared for sure.the game system or the system of use, there is always an improvement from time to time as well. This makes the quality and entertainment of playing online slots games that are increasing. PGSLOT

    ReplyDelete
  19. นักศึกษาจบใหม่ ที่กำลังก้าวเข้าสู่วัยทำงาน เว็บไซต์ menuahan ก็มีอีกหนึ่งบทความดี ๆ ที่จะให้ความรู้ด้านนี้อย่างละเอียด เป็นแนวทาง ในการจัการบริการเงินเดือน หรือ รายได้ของเรท เมื่อมีเงินเป็นของตัวเอง ให้สามารถอยู่รอด และมีเงินเพียงพอสำหรับการลงทุนอีกด้วย ดูเพิ่มเติม หากสนใจ ด้วยการคลิกที่ลิงค์

    ReplyDelete
  20. Sagameherelao มีโหมดทดลองเล่น บาคาร่าฟรี เชิญเลย สมัครสมาชิกง่าย ๆ ฟรี ไม่มีค่าสมัครใด ๆ ทั้งสิ้น เว็บไซต์ของเราได้รวบรวมเกมพนันออนไลน์มากมายไว้ในที่นี่ที่เดียว ไม่ว่าจะเป็น ยิงปลา , ไฮโล , บาคาร่า , สล็อตออนไลน์ และเกมพนันอื่น ๆ อีกมากมาย คุณจะได้พบกับความสนุกแบบครบรูปแบบในที่นี่ที่เดียว เฮียเหลาเผาโต๊ะ ขอต้อนรับสมาชิกทุกคน เว็บไซต์ของเราพร้อมเปิดให้บริการ 24 ชั่วโมง เรามีทีมงานมืออาชีพคอยให้คำแนะนำกับผู้เล่นทุกท่านตลอดทั้งวัน

    ReplyDelete
  21. Thank you for sharing good stories. visit us sometime at wallet allslot Thank you comment on this great blog.

    ReplyDelete
  22. Thank you for sharing good stories. visit us sometime at bet3d คาสิโน Thank you comment on this great blog.

    ReplyDelete
  23. Thank you for sharing good stories. visit us sometime at betflixthailand Thank you comment on this great blog.

    ReplyDelete
  24. Thank you for sharing good stories. visit us sometime at เบทฟิก999 Thank you comment on this great blog.

    ReplyDelete
  25. PGSLOT เว็บตรง
    ผู้ให้บริการเดิมพันพนันออนไลน์ PGSLOT อย่างเป็นทางการ
    PGSLOT SPDBET สล็อตเว็บตรงจากต่างประเทศ ระบบฝาก-ถอน อัตโนมัติ
    โปรโมชั่นและเครดิตฟรีมากมาย สมัครวันนี้ฟรีไม่มีค่าใช้จ่ายเล่นได้ตลอด 24 ชั่วโมง
    มีแอดมินและทีมงานคอยให้คำปรึกษาทุกปัญหาตลอดเวลา ติดต่อทีมงาน Line : @spdbet

    PGSLOT SPD

    ReplyDelete
  26. เกมสล็อต Oriental Prosperity เกมสล็อตมาใหม่ จากค่าย PG SLOT บนเว็บน้องหใหม่ที่ได้รับความนิยมในหมู่นักเดิมพันออนไลน์ เป็นอย่างมากในตอนนี้

    ReplyDelete
  27. ผจญภัยไปกับชาวไอริช และรับเงินรางวัลมากมายไปกับเกมสล็อต Clover Gold จากค่าย Pragmatic Play เกมสล็อตออนไลน์ BETFLIX เครดิตฟรี 100โคลเวอร์โกลด์ เกมสล็อตแจ็คพอตแตกง่าย ทดลองเล่นเกมสล็อตมาใหม่จากค่าย Slot PP ผู้เล่นทุก ๆ ท่าน BETFLIX เครดิตฟรี 100

    ReplyDelete
  28. มีลูกค้าของทาง betflix ถามทางแอดมินเรามาเสมอว่า มีเกมสล็อตจากค่าย pg slot เกมใดบ้าง หนังใหม่ ที่แจกหนักๆ จ่ายหนัก ซึ่งวันนี้ทางเว็บไซด์ BETFLIX เกมสล็อตแจกเงินรางวัล ของเรา ได้รวบรวมสามเกมสล็อต pg slot ที่แจกเงินรางวัลหนังใหม่

    ReplyDelete
  29. สำหรับเกมPG SLOT เว็บตรง สล็อตแตกง่าย BETFLIX ได้เงินไว เป็นเกมสล็อตที่มาในรูปแบบใหม่ ที่ทางเว็บ BETFLIX แนะนำ เว็บสล็อตแตกดี ได้เปิดโอกาส ให้ผู้เล่นนั้น ได้เข้ามาเดิมพัน อย่างสนุกสนาน พร้อมทั้งยัง สามารถทำเงิน สร้างรายได้ จากการเล่นเกมออนไลน์ได้เป็นอย่างดี PG SLOT เว็บตรง

    ReplyDelete
  30. เว็บ MEGA GAME ออนไลน์ หลายคน อาจจะ สงสัยว่า ระบบ AUTO คืออะไร ? Megagame-auto ทุกวันนี้ การเล่นสล็อต ในรูปแบบออนไลน์ ตอนนี้ เริ่มแพร่หลาย ทั้งในประเทศและต่างประเทศ ทางเมก้า MEGA GAME ระบบปฏิบัติการ อัตโนมัติ ที่ทำด้วยตัวคุณเอง

    ReplyDelete
  31. BETFLIX สวัสดีเพื่อนๆ สายนักปั่นสล็อตทุกๆท่าน ดูหนังออนไลน์ฟรี วันนี้ทางเราขอนำเสนอ สล็อตเว็บตรง ถอนไม่จำกัด ที่ให้บริการผ่านเว็บ BETFLIX สล็อตเว็บตรง ถอนไม่จำกัด ที่มีบริการ ฝากและถอน แบบไม่มีขั้นต่ำ และไม่จำกัดว่าจะต้อง ฝากหรือถอน ในจำนวนเท่าไหร่ ถึงจะเข้าเดิพันได้ เพราะเรามอบอิสระให้ผู้เล่นทุกๆท่าน ได้ทำรายการ แบบไม่มีจำกัดจำนวนครั้ง ในแต่ละวัน และยังสามารถถอนได้ แบบไม่มีขั้นต่ำ

    ReplyDelete
  32. จุดเด่นที่ทำให้ วงการเกมสล็อตต้องสั่นไหวมากๆกับการมาของเกมทางค่าย PG SLOT นั้นก็คือการที่มีระบบการเล่นที่ทันสมัยตอบโจทย์คนทุกเพศทุกวัยนั้นเอง เกมสล็อตภาพสวยในระดับ 3D ที่ไม่มีใครหน้าไหนมาทำภาพเกมสล้อตได้สวยเท่านี้อีกแล้วนั้นเอง รวมถึงยังมีความส่ใจในเนื้องานเป็นพิเสษอีกด้วย ทำให้ใครก็ตามที่ได้เล่นเกมสล็อตนี้แล้วก็ต้องติดใจไปตามๆกันนั้นเอง

    ReplyDelete
  33. PG slot website, the number 1 game, a lot of people, lots of promotions Mobile games that are easy to play with good profits. The games also have beautiful pictures, the jackpot is easy to break. Like a banana casing in your mouth, the latest PG slots that are easy to break, the most frequently broken SLOT PG games, the highest online slots PG bonuses, big web slots Can play all Mobile Auto Online games that are the hottest and most interesting to play right now. เว็บสล็อต

    ReplyDelete
  34. Thank you for sharing good stories. visit us sometime at แหล่ง รวม เว็บ สล็อต Thank you comment on this great blog.

    ReplyDelete
  35. Thank you for sharing good stories. visit us sometime at สล็อตทุกค่ายในเว็บเดียว Thank you comment on this great blog.

    ReplyDelete
  36. Thank you for sharing good stories. visit us sometime at ค่าย สล็อต Thank you comment on this great blog.

    ReplyDelete
  37. Thank you for sharing good stories. visit us sometime at shabu bet เครดิต ฟรี Thank you comment on this great blog.

    ReplyDelete
  38. Thank you for sharing good stories. visit us sometime at slot bet casino Thank you comment on this great blog.

    ReplyDelete
  39. Thank you for sharing good stories. visit us sometime at slotriches89 Thank you comment on this great blog.

    ReplyDelete
  40. Thank you for sharing good stories. visit us sometime at superbonus888auto Thank you comment on this great blog.

    ReplyDelete
  41. Thank you for sharing good stories. visit us sometime at รวม เกมส์ สล็อต ทุก ค่าย Thank you comment on this great blog.

    ReplyDelete
  42. Thank you for sharing good stories. visit us sometime at เว็บรวมสล็อตทุกค่าย wallet Thank you comment on this great blog.

    ReplyDelete
  43. Thank you for sharing good stories. visit us sometime at เว็บสล็อตทุกค่าย Thank you comment on this great blog.

    ReplyDelete
  44. Thank you for sharing good stories. visit us sometime at giga888 ฟรี เครดิต Thank you comment on this great blog.

    ReplyDelete
  45. Thank you for sharing good stories. visit us sometime at เครดิตฟรี รวมค่าย Thank you comment on this great blog.

    ReplyDelete
  46. Thank you for sharing good stories. visit us sometime at shabubet.com Thank you comment on this great blog.

    ReplyDelete
  47. Thank you for sharing good stories. visit us sometime at slot bet Thank you comment on this great blog.

    ReplyDelete
  48. Thank you for sharing good stories. visit us sometime at สล็อต xo รวมทุกค่าย Thank you comment on this great blog.

    ReplyDelete

Search This Blog