我在调试与我的SQL Server存储过程有关的代码时遇到了一个问题
“UPDATE语句与FOREIGN KEY约束冲突\”FK_PATIENTS_DropdownCounty \“。冲突发生在数据库\”**** \“,table \”dbo.DropdownCounty \“,列'County'
我正在使用DropdownCounty表来填充下拉菜单,但是当我尝试更新网页时,它给了我上面的问题。我在SQL本身尝试了CASCADE选项。
我正在使用的SQL Server存储过程在
下面T
我是否需要使用LEFT JOIN链接表格?
提前致谢,
我很抱歉,但我只是数据库新手 我在其表中包含了DropdownCounty的值
我上传的第二张图片是为了帮助您了解我在调用BtnUpdate时要调用的内容
答案 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