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これで、 とに子エントリがある場合とない場合がある2 つの行がSub table 1ありConnection tableます。

Sub table 1常に新しい で更新する必要がありますmainidSub table 2一意のキー制限があるため、エントリがまだ存在しない場合Connection tableにのみ、新しいキーで更新する必要があります。mainid

20 を超えるテーブル (および増加中) について話しているため、これは非常に単純化しすぎています。それぞれのテーブルには、エントリを一意にするものについて独自の制限があり、テーブルに存在できない場合はデータをコピーする必要があります/コピーしないでください。一意のキーに。

どんな助けでも大歓迎です!

4

1 に答える 1

0

私があなたを正しく理解していればON DELETE CASCADE、必要な外部キーがあなたの問題を解決するでしょう。このように、「メイン」テーブルからエントリを削除すると、FKを介して接続されている他のテーブルからエントリが削除されます。

于 2012-11-22T23:00:46.170 に答える