異なるデータ構造を持つテーブル (Oracle) に対する統合された挿入クエリについて質問があります。例を挙げて詳しく説明しましょう。
tb_customers (
id NUMBER(3), name VARCHAR2(40), archive_id NUMBER(3)
)
tb_suppliers (
id NUMBER(3), name VARCHAR2(40), contact VARCHAR2(40), xxx, xxx,
archive_id NUMBER(3)
)
すべてのテーブルに存在する唯一の列は [archive_id] です。計画は、すべてのレコードを別のデータベース パーティションにコピー (複製) し、それに応じてそれらのレコードの archive_id をインクリメントすることによって、データセットの新しいアーカイブを作成することです。[archive_id] は常に主キーの一部です。
私の問題は、データの実際の複製を行う select ステートメントにあります。列は可変であるため、データをコピーして archive_id を更新する統一された select ステートメントを考え出すのに苦労しています。
1 つの解決策 (うまくいく) は、ストアド プロシージャ内のすべてのテーブルを反復処理し、次のことを行うことです。
CREATE TABLE temp as (SELECT * from ORIGINAL_TABLE);
UPDATE temp SET archive_id=something;
INSERT INTO ORIGINAL_TABLE (select * from temp);
DROP TABLE temp;
DDLコマンドはすべての復元ポイントを台無しにするため、このソリューションはあまり好きではありません.
他に解決策はありますか?