要求:使用ETL工具更新表1,然後我需要使用基於表1的視圖截斷數據並將數據插入到表2中。執行此操作的更好,更有效的方法是什麼? (無ETL工具)Oracle觸發器
我迄今所做:
我已經創建其用於截斷和插入到另一個表「表2」使用其基於「表1」
的視圖的觸發下面是代碼:
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;
現在的問題是,有表1中,但觸發器觸發多個插入第一插入完成後。我嘗試使用每行,但插入的數量超過70K,所以它非常耗時。
請提出一個方法,我可以執行上述工作。
是否所有插入都在一個事務中完成?如果是這樣,你可以在觸發器中創建一個dbms_job - 沒有自治事務並且沒有提交,依靠調用環境來提交事務,這也將導致作業啓動。 –
從未在觸發器中使用過dbms_job,如果可能的話,你可以舉一個例子 – Stu
因爲它是DDL,所以'truncate'將會提交,所以第一個是冗餘的。 –