これは私が親切にuser75ponicの助けを借りて得たストアドプロシージャです。ソーステーブルのレコードをストアドプロシージャ経由でターゲットテーブルに転送した後にレコードを削除します
CREATE OR REPLACE PROCEDURE ARCHIVE_DATA
AS
BEGIN
MERGE
INTO Schema2.table trg
USING (
SELECT
column1
, column2
, column3
FROM
Schema1.table
WHERE
col_date >= 360
)
src
ON
(
trg.column1 = src.column1
)
WHEN NOT MATCHED THEN
INSERT
(
column1
, column2
, column3
)
VALUES
(
src.column1
, src.column2
, src.column3
)
;
COMMIT;
END;
/
は今、このストアドプロシージャは、テーブルをソースからターゲットにレコードを転送することになっていると、それはそうやっています。
私の挑戦は、このストアドプロシージャに以下の削除スクリプトを含めることです。目的は、レコードが移動された後で、ターゲット表に存在する場合にのみ、レコードをソース表から削除することです。 original Post
ソーステーブルとターゲットテーブルの主キーはどちらですか?毎週の記録を区別する日付または他のフィールドはありますか? – user75ponic
PKは各テーブルのtable_idです。そして、table_date <= sysdate - 360はレコードの年齢を決定します。 – Cyber