Использование Oracle расширенных очередей для отслеживания обновления столбца таблицы базы данных - PullRequest
0 голосов
/ 04 мая 2020

Env: Oracle 12 c

Я новичок в 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 возможно иметь некоторый тип CALLBACK функция с использованием AQ?

Мне в основном нужны средства, чтобы знать, когда обновляется столбец STATUS, чтобы выполнить какую-то другую операцию, когда это происходит.

1 Ответ

0 голосов
/ 06 мая 2020

К вашему сведению, я использовал ссылки / информацию, предоставленную в комментариях, а также на других сайтах, чтобы основать свое решение, используя Oracle Расширенные очереди.

Еще одна ссылка, которая была предоставлена ​​мне для этой цели, была :

https://markhoxey.wordpress.com/2016/03/01/asynchronous-processing-using-aq-callback/

Чтобы лучше ответить на этот вопрос, я использовал пример кода, который Марк Хокси представил в своей статье, в частности, процедуру PL / SQL CALLBACK, которая был вызван через мой триггер таблицы во время обновления STATUS.

Вы можете увидеть весь доступный код здесь:

https://onedrive.live.com/?id=B48A94826582EA7D%2158434&cid=B48A94826582EA7D

Это Это лучший вариант для асинхронной обработки вместо опроса таблиц с запланированными заданиями.

...