簡體   English   中英

錯誤-無法添加或更新子行:外鍵約束失敗

[英]Error - Cannot add or update a child row: a foreign key constraint fails

我有兩張桌子

purchase(purchId,date,empId,supId)
item(itemID,name,qty,unit_price)

和,

purchase_item(purchId,itemID,qty,unit_price)

購買表和項目表可以很好地更新,但是當我嘗試更新purchase_item

不能添加或更新子行,外鍵約束失敗( bookshoppurchase_item ,約束purchase_item_ibfk_1外鍵( purchId )參考purchasepurchId )ON DELETE CASCADE ON UPDATE CASCADE)

使用的更新語句,

Insert into purchase_item values('" + invoice + "','" + ItemId + "','" + qty + "','" + unitPrice + "')"; (working on a C# project)

代碼,w

int ItemId = Convert.ToInt32(textBox3.Text);
        string ItemName = textBox4.Text;
        string Category = textBox5.Text;
        int qty = Convert.ToInt32(textBox7.Text);
        double UnitPrice = Convert.ToDouble(textBox6.Text);
        string supname = textBox8.Text;
        int supId = 12345;
        int invoice = Convert.ToInt32(textBox9.Text);
        string query1 = "Insert into item values('" + ItemId + "','" + ItemName + "','" + Category + "','" + qty + "','" + UnitPrice + "')";
        int rows = db.SaveUpdateDelete(query1);

        DateTime d = DateTime.Now;
        int day = d.Day;
        int month = d.Month;
        int year = d.Year;

        string dt = year + "/" + month + "/" + day;


        string query = "Insert into purchase values("+invoice+",'"+dt+"',"+username+","+supId+")";
        string query2 = "Insert into purchase_item values('" + invoice + "','" + ItemId + "','" + qty + "','" + UnitPrice + "')";

        int rows1 = db.SaveUpdateDelete(query);
        int rows2 = db.SaveUpdateDelete(query2);
        if  (rows==1 && rows1==1 && rows2==1)
        {


            MessageBox.Show("Data Entered Successfully.");
        }
        else
        {
            MessageBox.Show("Failed to Insert Data.");
        }           

之所以出現此錯誤,是因為您試圖根據當前存儲在購買表和項目表中的值,將一行不具有有效值的itemID或purchId字段添加到purchase_item。 如果您發布更多代碼,我可以幫助您診斷具體原因。

嘗試執行以下步驟,希望您會遇到什么問題:

  1. 首先檢查您的查詢是否在以下行中成功執行

string query1 = "Insert into item values('" + ItemId + "','" + ItemName + "','" + Category + "','" + qty + "','" + UnitPrice + "')"; int rows = db.SaveUpdateDelete(query1);

你在“行”中得到什么,然后

更改您的代碼以首先插入購買,然后創建項目列表,然后插入purchase_items。

如果您在Purchase_items中使用的購買ID,則為。

您可以在遇到此問題的哪一行代碼上確認另一位。

更新:再做一件事,請首先傳遞靜態值以驗證SP是否工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM