Oracle - >自动更改表的列

时间:2012-11-15 02:37:00

标签: oracle plsql

无论如何我们可以根据日期自动更改列的值吗?喜欢写作 程序或触发器?我需要更改值而不插入或更新任何其他表/列。

1 个答案:

答案 0 :(得分:0)

不直接,没有。

您可以使用将在后台运行的DBMS_JOBDBMS_SCHEDULER提交作业,并在以后的某个时间点发出UPDATE。插入或更新行时,您可以从触发器提交作业,即

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE INSERT OR UPDATE ON table_name
  FOR EACH ROW
DECLARE
  l_jobno PLS_INTEGER;
BEGIN
  IF :new.status = 'active'
  THEN 
    dbms_job.submit( l_jobno,
                     q'{UPDATE table_name SET status = 'inactive' WHERE table_id = }' || :new.table_id,
                     sysdate + x ); 
  END IF;
END;

当然,根据我们所讨论的行数,您可能会更好地服务于每隔几分钟运行一个基于您定义的任何条件更新表的作业。