我在 SQL Server 2008 R2 中有三个表:Country
Address
和 Country_Address
Country
有列:CountryID
Country
1、阿富汗
2、澳大利亚Address
有列:AddressID
Address
1, 5 史密斯路Country_Address
有列:CountryID
AddressID
1, 1
编辑 : 所以在这个例子中,5 smith way 是阿富汗的地址。
我清空了表格,然后添加了两个国家和一个地址,然后添加了 Country_Address
中的链接。在 1 和 1 之间。当我尝试更新 CountryID
时从 1 到 2,我不能因为 FK 约束。我不明白这是为什么,因为 CountryID
我正在尝试分配确实存在。那么我如何设法更新它?
编辑1 :这是我尝试在 SQL Management Studio 中进行更新时遇到的错误,我收到 InvalidOperationException
- “无法更新‘...’类型的模型。”在 Visual Studio 中。
No row was updated.
The data in row 1 was not committed. Error Source: .Net SqlClient Data Provider. Error Message: The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_Country_Address_Address". The conflict occurred in database "...", table "dbo.Address", column 'AddressID'.
The statement has been terminated.
最佳答案
问题是当您尝试更新 Country 表中的主键值时,Country_Address 表将包含对 Country 表的无效引用。
如果您想像这样更新 key ,最简单的方法是启用所谓的级联更新。您在自己创建外键时执行此操作。
看这里:http://msdn.microsoft.com/en-us/library/aa933119%28SQL.80%29.aspx
编辑:如果我最终正确理解了这一点,我认为 Country_Address
中的外键在 CountryID
上是相反的,或者至少是不正确的柱子。请验证外键定义。
做 UPDATE Country_Address SET CountryID = 2
如果一切设置正确,应该可以工作。您在尝试更新时收到的错误消息不应导致 AddressID
中的值无效。列 - 这向我表明外键设置不正确。
关于sql - 为什么我不能更新这个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342517/