在Oracle 11gr2中创建PL/SQL WatchDog/Daemon



我应该创建一个看门狗,每隔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;

最新更新