2012-07-31 99 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