我使用更新级联创建了一个外键约束,但它不更新子表

时间:2014-04-09 05:41:11

标签: sql sql-server sql-server-2008

父表

SELECT * FROM dbo.TBEMPLOYEE

2|Sohail Ashraf|1980-01-12 00:00:00.000|2013-12-05 15:40:48.303|Sen.Software Engineer|

儿童表

SELECT * FROM dbo.TBADDRESS

2|Sohail Ashraf|sohail.azfal@netsoltech.com|923334447777gulberg|Lahore|Pakistan

其中2是父表中的emp_id(PK)和子表中的FK

当我像这样更新父表时

UPDATE TBEMPLOYEE
set emp_nme = 'Mohammad Sohail Ashraf'
WHERE emp_id = 2 

结果如下

2|Mohammad Sohail Ashraf|1980-01-12 00:00:00.000|2013-12-05 15:40:48.303|Sen.Software Engineer

但是不更新子表记录。

更新父表后的子表与上面相同。像这样的子表结果

2|Sohail Ashraf|sohail.azfal@netsoltech.com|923334447777|gulberg|Lahore|Pakistan

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

你误解了级联意味着什么。它仅适用于外键列,而不适用于整个记录。如果更改父记录中PK字段中的值,则新值将级联到子记录中的FK字段。没有其他领域受到影响。

这引出了一个问题,为什么你首先要复制数据?如果您将名称存储在父记录中,那么为什么还要在子记录中存储该名称?它应该只在一个或另一个。如果您需要两个表中的数据,则执行连接。

答案 1 :(得分:2)

当更新父表中的主键时,级联更新会更新子表中的外键。