无论如何我们可以根据日期自动更改列的值吗?像编写程序或触发器一样?我需要在不插入或更新任何其他表/列的情况下更改值。
问问题
57 次
1 回答
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;
当然,根据我们所讨论的行数,您可能会更好地拥有一个每隔几分钟运行一次的作业,该作业会根据您定义的任何标准更新表。
于 2012-11-15T03:21:56.993 回答