0

要件: ETL ツールを使用してテーブル 1 を更新した後、テーブル 1 に基づくビューを使用してデータを切り捨ててテーブル 2 に挿入する必要があります。(ETL ツールなし)

私がこれまでに行ったこと:

「Table1」に基づくビューを使用して、別のテーブル「Table 2」を切り捨てて挿入するために使用されるトリガーを作成しました。

以下はコードです:

    CREATE OR REPLACE TRIGGER My_Trigger
    AFTER INSERT ON Table1 
    DECLARE PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
    execute immediate 'truncate table Table2';COMMIT;
    insert into Table2( X,Y,Z)
    select * from MY_VIEW;
    COMMIT;
    END;

ここでの問題は、table1 に複数の挿入がありますが、最初の挿入が完了した後にトリガーが起動することです。各行に使用してみましたが、挿入数が70kを超えるため、非常に時間がかかります。

上記の仕事を実行できる方法を提案してください。

4

1 に答える 1

1

これは、トリガーで行うべきことではありません。table1 に挿入する前に table2 を切り捨てる方がはるかに優れた設計です。

それが必要だとは思わないかもしれませんが、特定の順序で PL/SQL プロシージャを実行できる一連のプロシージャを提供するパッケージである dbms_scheduler を見たいと思うかもしれません。

after ステートメント トリガーを本当に使用したい場合は、別のテーブルを作成して、今日のテーブルが既に切り捨てられていることを示すために使用できます。

于 2013-05-31T20:49:34.007 に答える