2012-11-22 32 views
0

我有一個SQL Server 2005數據庫中的表,它與其他表有很多連接。每當基表得到重複的條目時,我們編寫了一個存儲過程,用於從所有連接的表中移動數據,然後刪除重複的條目。合併使用外鍵進行連接的行

問題是,隨着項目不斷增長,連接表的數量開始變得難以管理,有時開發人員忘記更新存儲過程,然後合併過程將失敗。

在TSQL中是否有更流暢的合併功能?我在想,因爲所有的表都與foreign keys連接,所以需要更新/插入的表很可能只是通過讀取表連接來計算。

表結構看起來是這樣的:

Main table 
------------------------ 
mainid (PK) | datacolumns... 

Sub table 1: 
------------------------ 
subid1 (PK) | mainid (FK) | datacolumns... 

Sub table 2: 
------------------------ 
subid2 (PK) | mainid (FK) | datacolumns... 

Sub table 3: 
------------------------ 
subid3 (PK) | datacolumns... 

Connection table between "Main table" and "Sub table 3": 
------------------------ 
mainid (FK) | subid3 (FK) 

現在我有Main table兩行,可能會或可能不會有Sub table 1Connection table子條目。

Sub table 1應始終更新爲新的mainidSub table 2Connection table具有唯一的密鑰限制,因此如果條目尚不存在,則只能使用新的mainid進行更新。

由於我們談論超過20個表(以及不斷增長),每個表都有自己的限制,使得條目具有唯一性,並且應該/不應該複製數據,如果它們不存在在表中根據唯一鍵。

任何幫助表示讚賞!

回答

0

如果我正確理解了你,ON DELETE CASCADE對於必要的外鍵將解決你的問題。這樣從「主」表中刪除條目將刪除通過FK連接的其他表中的條目。

+0

謝謝,但我正在尋找合併數據,而不是刪除它。 – Jan

相關問題