我应该创建一个监视程序,在Oracle DB中每隔5分钟监视一个表中的字段。如果字段具有特定值(日期早于x),则应执行操作。 是否可以在PL / SQL中执行此操作?
如果不是,我应该创建一个脚本shell并从crontab调用它,或者使用调度程序。
答案 0 :(得分:0)
如果字段具有特定值(日期早于x),则应执行操作。
您可以创建 TRIGGER 。如果插入新行使得日期列具有特定值,则在触发器中执行某些操作。
或许,您需要AFTER INSERT TRIGGER FOR EACH ROW
,因为您需要引用:NEW
值。
以下是有关CREATE TRIGGER的文档的链接。
如果您确实想将其作为预定作业,那么您可以使用 DBMS_SCHEDULER 。在10g版本发布之前,它是 DBMS_JOB 。
答案 1 :(得分:0)
您需要的是使用DBMS_SCHEDULER package
DBMS_SCHEDULER包提供了可从任何PL / SQL程序调用的调度函数和过程的集合。 (......) Scheduler使用丰富的日历语法,使您能够定义重复的日程安排,例如"每周二和周五下午4:00。"或者"每个月的第二个星期三。"
答案 2 :(得分:0)
抱歉,也许我省略了要监控的字段的详细信息。我的意思是如果查询的结果: 从mytab中选择up_date,其中name_id ='test' 超过15分钟 然后 更新mytab set value_col ='no'其中name_id ='test'
但我不知道是否可以用触发器来做。有了SCHEDULER,我可以在间隔时间检查,可能是一个很好的解决方法。
答案 3 :(得分:0)
您可能仍然有一个AFTER UPDATE触发器,并在该触发器中检查更新的行是否是您要观看的行。像这样:
IF :old.name_id = 'test' THEN
-- do something here
END IF;