2012-07-31 55 views
0

我有一個觸發器將數據從一個表發送到另一個數據庫中的另一個表。所有工作正常。oracle觸發器查詢

的概率是存在的END DATE一個新的概念,其中,如果END DATE存在一個人,該行應該在那個特定的日期到達另一臺..

例如:如果某人結束日期是8月31日,它應該在那一天而已,但ofcourse,我的觸發器是在事件的變化(當結束日期設定爲8月31日)發射..

可否請你建議我什麼我可以做將行設置爲ENDDATE

回答

3

這聽起來不像你不想觸發。這聽起來像你想要一份工作。例如,如果您創建一個過程,所有其end_date今天

CREATE OR REPLACE PROCEDURE move_rows_with_end_date(
    p_end_date IN DATE DEFAULT trunc(SYSDATE) 
) 
AS 
BEGIN 
    INSERT INTO [email protected]_database(<<list of columns>>) 
    SELECT <<list of columns>> 
     FROM table_name 
    WHERE end_date = trunc(sysdate); 
END; 

然後你就可以創建一個每天午夜運行程序作業的行轉移

DECLARE 
    l_jobno PLS_INTEGER; 
BEGIN 
    dbms_job.submit(l_jobno, 
        'BEGIN move_rows_with_end_date; END;', 
        trunc(sysdate+1), 
        'trunc(sysdate+1)'); 
    commit; 
END; 
+0

實際上賈斯汀,使用觸發器是合理的,因爲我需要在實現整個結束日期概念之前實時發送行。但我會嘗試將帶有結束日期的行放入此過程作業中,然後嘗試..謝謝您的輸入 – MayankG 2012-07-31 07:39:16

+0

謝謝Justin! – MayankG 2012-07-31 10:20:28