UPDATE语句与FOREIGN KEY约束冲突 - 如何修复?

时间:2017-04-17 15:35:15

标签: c# sql asp.net sql-server stored-procedures

enter image description here我在调试与我的SQL Server存储过程有关的代码时遇到了一个问题

  

“UPDATE语句与FOREIGN KEY约束冲突\”FK_PATIENTS_DropdownCounty \“。冲突发生在数据库\”**** \“,table \”dbo.DropdownCounty \“,列'County'

我正在使用DropdownCounty表来填充下拉菜单,但是当我尝试更新网页时,它给了我上面的问题。我在SQL本身尝试了CASCADE选项。

我正在使用的SQL Server存储过程在

下面
T

我是否需要使用LEFT JOIN链接表格?

提前致谢,

我很抱歉,但我只是数据库新手 我在其表中包含了DropdownCounty的值

enter image description here

我上传的第二张图片是为了帮助您了解我在调用BtnUpdate时要调用的内容

2 个答案:

答案 0 :(得分:1)

您有一个表格PATIENTS,该表格使用DropdownCounty类型的CountyId与表格int相关联。在表UPDATE上的PATIENTS声明中,您尝试使用县的CountyId值设置FK列nchar,而不是使用pk值CountyId ,这就是你收到错误的原因。您需要使用主键的值更新它,即需要将其保留回PATIENTS表。

更改您的存储过程以接收@CountyId类型的int而不是nchar )并在UPDATE语句中使用它

您的代码显示下拉列表,几乎所有下拉控件( web,windows,wpf,无论)都能够具有显示值和基础值(如数字标识符)。这是您的代码在调用存储过程时需要传递的标识符。

答案 1 :(得分:0)

问题在于这一行:

County = ISNULL(@County, County),

您尝试将县名填入(名称不详的)County列,实际上它应包含CountyID

您可以通过在SQL中查找CountyID来解决此问题,如下所示:

County = CASE @County WHEN NULL THEN County ELSE (SELECT CountyID FROM DropdownCounty WHERE County = @County) END