我应该创建一个看门狗,每隔5分钟在Oracle DB中监视一个表中的字段。若字段具有特定值(日期早于x),则应执行操作。在PL/SQL中可以做到这一点吗?
如果不是,我应该创建一个脚本shell并从crontab调用它,或者使用Scheduler。
若字段具有特定值(日期早于x),则应执行操作。
您可以创建触发器。如果插入新行以使日期列具有特定值,则在触发器中执行一些操作。
也许,您需要一个AFTER INSERT TRIGGER FOR EACH ROW
,因为您需要引用:NEW
值。
以下是有关CREATE TRIGGER的文档链接。
如果您真的想将其作为计划作业来执行,那么可以使用DBMS_SCHEDULER。在10g版本之前,它是DBMS_JOB。
您需要的是使用DBMS_SCHEDULER包
DBMS_SCHEDULER包提供了可从任何PL/SQL程序调用的调度函数和过程的集合。(…)Scheduler使用丰富的日历语法来定义重复的时间表,例如"每个星期二和星期五下午4:00"或"每个月的第二个星期三"
对不起,也许我遗漏了一个细节——要监视的字段是针对特定行的。我的意思是,如果查询结果:从mytab中选择up_date,其中name_id="测试"超过15分钟然后更新mytab set value_col='no'其中name_id='test'
但我不知道是否可以用扳机来完成。有了SCHEDULER,我可以在间隔时间进行检查,这可能是一个很好的解决方案。
您可能仍然有一个AFTER UPDATE触发器,并且在该触发器中检查更新的行是否是您想要查看的行。类似这样的东西:
IF :old.name_id = 'test' THEN
-- do something here
END IF;