如何解決 DELETE 語句與 REFERENCE 約束"FK_tablename_tablename

寫程序遇到 這句報錯的意思就是 你主外鍵表數據操作錯誤了 DELETE 語句與 REFERENCE 約束"FK_tablename_tablename

解決方法很簡單,在這裏插入圖片描述

看到qId的鑰匙有兩個色了沒有,一個金色是主鍵的顏色。另外一個是外鍵的顏色。
可以先在程序裏寫先刪除主鍵表的某個值,再刪除外鍵表的某個值, 這樣就不會報錯了。這是思路。
下面是c#實現的代碼


DialogResult result = MessageBox.Show("確定刪除題號 " + textBox1.Text + " 題庫號 " + textBox2.Text + " 的內容?", "標題", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            string commandStr = "delete from Question  where qId=@qId and qBId=@qBId";
			//刪除外鍵的值
			
            string ThiscommandStr = "delete from answerQuestions  where qId=@qId and qBId=@qBId";
            //刪除主鍵的值
            
            if (result == DialogResult.OK)
            {
                using (SqlConnection CON = new SqlConnection(sqlLink.sqlcon()))
                {
                    CON.Open();
                    using (SqlCommand CMD = new SqlCommand(commandStr, CON))
                    {
                        SqlCommand ThisCMD = new SqlCommand(ThiscommandStr,CON);
                        CMD.Parameters.AddWithValue("@qId", textBox1.Text);
                        CMD.Parameters.AddWithValue("@qBId", textBox2.Text);
                        ThisCMD.Parameters.AddWithValue("@qId", textBox1.Text);
                        ThisCMD.Parameters.AddWithValue("@qBId", textBox2.Text);
                        ThisCMD.ExecuteNonQuery();//先執行 刪除主鍵的值的任務
                        ThisCMD.Dispose();//釋放資源
                        CMD.ExecuteNonQuery();// 再執行刪除外鍵的值的任務
                        CMD.Dispose();//釋放資源
                       
                        button2_Click(sender, e);
                    }
                    CON.Close();
                }
            }
            

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章