如何解决 DELETE 语句与 REFERENCE 约束"FK_tablename_tablename

本文介绍了一种解决主键和外键表数据操作时出现的DELETE语句与REFERENCE约束冲突的方法,通过先删除主键表值再删除外键表值的顺序,避免报错。并提供了C#代码示例。

写程序遇到 这句报错的意思就是 你主外键表数据操作错误了 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();
                }
            }
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Izrj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值