2017-05-11 79 views
0

我有如下表如何使用另一個表更新具有ON UPDATE RESTRICT外鍵約束的主鍵?

tblA(id,name,address) pk:id 

tblB(depname,depaddress,depmanager_id) pk:depname fk: depmanager_id reference tblA(id on update restrict) 

他們下面的數據:

tblA 

id name address 
1  jazz kathmandu 
2  hari pokhara 

tblB 
depname depaddress depmanager 
HR   Chicago  1 
ECA  Paris   2 

現在的情況是我想更新記錄的ID爲1 TBLA用不同的ID與id。 我該怎麼做? (PS:要求規定,我不能改變表的現有結構,也沒有我可以創建任何新表)

+0

您是否可以不刪除FK約束,對兩個表進行必要的更新然後重新創建FK約束? – Simon

+0

這篇文章可能會解釋:[爲什麼更新'PRIMARY KEY'不是一個好的設計/想法](http://stackoverflow.com/a/3838649/2298301)。如果你想有一個間歇性更新的字段,可以考慮不要把它作爲「PRIMARY KEY」。另一方面,如果您希望在更改所有FOREIGN KEY時執行更新,您可以始終擁有['ON UPDATE CASCADE'](http://stackoverflow.com/q/1481476/2298301)主鍵的值。 –

+0

我不行。要求是我不能改變現有的表格結構。 –

回答

0

您應該創建一個新表(tblA1),並與新的ID插入來自TBLA數據。

在此之後,除去FK,更新所述第二表(TBLB)與新的ID(映射TBLA ID來tblA1 IDS)。

一旦ID被正確映射,你可以建立一個新的FK TBLB和tblA1之間。