无论如何我们可以根据日期自动更改列的值吗?喜欢写作 程序或触发器?我需要更改值而不插入或更新任何其他表/列。
答案 0 :(得分:0)
不直接,没有。
您可以使用将在后台运行的DBMS_JOB
或DBMS_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;
当然,根据我们所讨论的行数,您可能会更好地服务于每隔几分钟运行一个基于您定义的任何条件更新表的作业。