0

我有一个触发器,它将数据从一个表发送到另一个数据库中的另一个表。一切正常。

问题是有一个新概念END DATE,其中,如果END DATE一个人出现,该行应该在该特定日期到达另一个表。

例如:如果某人的结束日期是 8 月 31 日,它应该只在那天进行,但是当然,我的触发器在事件更改时触发(当 enddate 设置为 8 月 31 日时)..

你能告诉我我能做些什么来设置行继续ENDDATE吗?

4

1 回答 1

3

听起来你不想要触发器。听起来你想要一份工作。例如,如果您创建一个过程来传输end_date今天的所有行

CREATE OR REPLACE PROCEDURE move_rows_with_end_date(
  p_end_date IN DATE DEFAULT trunc(SYSDATE) 
)
AS
BEGIN
  INSERT INTO table_name@remote_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;
于 2012-07-31T07:29:38.980 回答