Oracle запускает выполнение внешнего файла перед операцией вставки - PullRequest
0 голосов
/ 23 октября 2018

Я создал триггер Oracle, который выполняет внешний файл Python через DBMS_SCHEDULER.RUN_JOB(), но сначала он выполняет файл Python, а затем вставляет строку в таблицу. Я хочу выполнить совершенно противоположную операцию.

CREATE OR REPLACE TRIGGER sample
AFTER INSERT ON client

BEGIN

  EXEC DBMS_SCHEDULER.RUN_JOB("JOB CONTAN PYTHON FILE");

END;

Скажите мне правильный путьсделай это

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Существует разница между строками, вставляемыми в таблицу, и теми строками, которые видны для другого сеанса.Пока данные не будут зафиксированы, эти вставленные строки не будут видны ни одной другой транзакции.Если ваш код Python пытается подключиться к базе данных для просмотра этих строк, он не увидит их.

Точно так же ваша транзакция не может сообщить клиенту (в вашем случае SQL Developer), чтовставка выполнена успешно, пока триггер не завершится.В этом случае необходимо дождаться завершения вызова python, прежде чем вернуться.

Обычно триггеры считаются «плохой практикой», хотя у них действительно есть хорошие приложения.Ожидание сеанса для внешней задачи также является чем-то, чего следует избегать.Я бы порекомендовал вам пересмотреть свой подход к тому, чего вы пытаетесь достичь.

0 голосов
/ 23 октября 2018

Откуда ты это знаешь?

Думай!

  • у вас есть таблица
  • есть триггер на этой таблице
  • триггер срабатывает при вставке данных в таблицу и ...
  • ... вызывает скрипт Python

Итак, как этот скрипт может выполнить до вставки строки, если именно это действие - строка вставляется - запускает и запускает скрипт Python?

Если вы не докажете, что я не прав, все должно быть в порядке.

...