环境。Oracle 12c
我是Oracle高级队列(AQ)的新手,看起来它应该是代替轮询的最佳方法。
基于这一点,我想利用AQ基于以下触发器来使用。
CREATE OR REPLACE TRIGGER MY_TRG
AFTER UPDATE OF STATUS ON "MY_TABLE"
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
declare
v_status INTEGER;
begin
if :OLD.status = 'ERROR' and (:NEW.status = 'OK' or :NEW.status = 'ERROR') then
--
-- do some Advanced Queue processing here ?
--
end if;
end;
那么,在STATUS列更新时,是否可以用AQ来代替轮询? 是否可以使用某种类型的CALLBACK功能?
基本上,我需要知道STATUS列何时更新,以便在更新时执行其他操作。
顺便说一下,我已经从评论以及其他网站提供的链接信息中,根据我的解决方案使用Oracle高级队列。
另一个为这个目的提供给我的链接是。
https:/markhoxey.wordpress.com20160301asynchronous-processing-using-aq-callback。
为了更好地回答这个问题,我使用了Mark Hoxey在他的文章中提供的示例代码,特别是在STATUS更新过程中,通过我的表触发器调用的PLSQL CALLBACK例程。
你可以在这里看到所有可用的代码。
https:/onedrive.live.com?id=B48A94826582EA7D%2158434&cid=B48A94826582EA7D。
这是到目前为止,在异步处理而不是用计划作业轮询表时的最佳选择。