私は3つのテーブルを持っています。
1) SourceTable - 一部のデータを含むソース テーブル
2) DestinationTable - ソース テーブルと同じスキーマを持つ宛先テーブル。両方のテーブルに同様の種類のデータがあります
3) FKSourceTable - SourceTable への FK 参照を持つまったく異なるテーブル
4) FKDestinationTable - DestinationTable への FK 参照を持つまったく異なるテーブル。FKSourceTable と同じスキーマを持つ
ここで、一部のデータを SourceTable から DestinationTable に、FKSourceTable から FKDestinationTable に移行するタスクが与えられています。
ただし、DestinationTable に同じ PK を持つ独自のレコードがあり、PK 違反が発生する可能性があるため、主キーを移行できません。
PK の自動 ID 列として DestinationTable を使用し、一括挿入を行う場合、PK 列を指定しないため、自動 ID がそのジョブを実行します。
これは、DestionationTable の新しいレコードがまったく新しい ID を持つことを意味します。
私が抱えている問題は、FKSourceTable を FKDestinationTable に移行するときに FK 参照を維持するにはどうすればよいですか? 次のように DestinationTable に一括挿入を行うと、ID を追跡できなくなります。
INSERT INTO DestionationTable
(Col1, Col2)
SELECT st.Col1, st.Col2
FROM SourceTable st
(DestionationTable には、Id、Col1、Col2 の 3 つの列があります)
問題は、SSIS やその他の ETL ソリューションを使用できないことです。簡単な SQL スクリプトでこれを行う必要があります。
誰にもこれに取り組むためのアイデアはありますか? OUTPUT INTO などを使用してみましたが、元の ID と新しい ID の間の参照を保持する方法がわかりませんでした
どんな助けでも大歓迎です
なんどんさん、ありがとうございます。