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
これで、 とに子エントリがある場合とない場合がある2 つの行がSub table 1
ありConnection table
ます。
Sub table 1
常に新しい で更新する必要がありますmainid
。Sub table 2
一意のキー制限があるため、エントリがまだ存在しない場合Connection table
にのみ、新しいキーで更新する必要があります。mainid
20 を超えるテーブル (および増加中) について話しているため、これは非常に単純化しすぎています。それぞれのテーブルには、エントリを一意にするものについて独自の制限があり、テーブルに存在できない場合はデータをコピーする必要があります/コピーしないでください。一意のキーに。
どんな助けでも大歓迎です!