単一のテーブルの冗長な行を「マージ」する必要がある実稼働データベースがあります。
このテーブルの両方の行が、ID を除いて同じ値を持っていると仮定しましょう。
Table "PrimaryStuff"
ID | SomeValue
1 | "I have value"
2 | "I have value"
3 | "I am different"
また、多数の関連テーブルが存在すると仮定しましょう。「PrimaryStuff」テーブルで重複が作成されたため、多くの場合、これらの子テーブルに行が作成され、すべてが PrimaryStuff テーブルの単一のレコードに関連付けられる必要があります。 これらのテーブルの数と名前は私の管理下になく、実行時に動的に考慮する必要があります。IE: 他の人が私の知らないうちにデータベースを編集する可能性があるため、関連するレコードの名前や数さえわかりません。
Table "ForeignStuff"
ID | PrimaryStuffId | LocalValue
1| 1| "I have the correct FK"
2| 1| "I have the correct FK"
3| 2| "I should get pointed to an FK of 1"
PrimaryStuffの行 1 と 2 の重複を解決するには、関連するすべてのテーブルの FK を 1 に変更してから、PrimaryStuff の行 2 を削除したいと考えています。行 2 の主キーを 1 に変更すると、変更がカスケードアウトします。PrimaryStuff の一意のインデックスで重複キーになるため、これを行うことはできません。
お気軽に質問してください。わかりにくいことは何でも解決しようとします。