2014-04-09 65 views
0

父表我創建了級聯更新外鍵約束,但它不更新子表

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|[email protected]|923334447777gulberg|Lahore|Pakistan 

哪裏2emp_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|[email protected]|923334447777|gulberg|Lahore|Pakistan 

誰能幫助我?

+1

您的模式看起來多餘。外鍵約束旨在通過將數據存儲在一個表中並通過鍵提取數據來減少冗餘。在這裏,你有兩個表中的名字。 – Knightwisp

回答

3

你誤解了級聯的含義。它只適用於外鍵列,而不適用於整個記錄。如果您更改父記錄中PK字段的值,則新值將級聯到子記錄中的FK字段。沒有其他領域受到影響。

這引發了一個問題,爲什麼你首先要複製數據?如果您的姓名存儲在父記錄中,那麼您爲什麼還要將其存儲在子記錄中?它應該只在一個或另一個。如果你需要來自兩個表的數據,那麼你執行一個連接。

2

級聯更新在更新父表中的主鍵時更新子表中的外鍵。

相關問題