Отправить текущую строку в качестве параметра в запрос http в Oracle DB Trigger - PullRequest
0 голосов
/ 28 апреля 2020

Я использую приведенный ниже код для вызова http-вызова всякий раз, когда происходит вставка или обновление в TEST_TABLE через Oracle Триггер БД

create or replace TRIGGER TEST_TABLE_TRIGGER 
AFTER INSERT OR UPDATE OF VALUE ON TEST_TABLE 

for each row
DECLARE

  req utl_http.req;
  res utl_http.resp;
  url varchar2(100) := 'http://{serverIP}:8086/testMethod';

BEGIN
  -- need to pass current row to the http method
  req := utl_http.begin_request(url, 'GET',' HTTP/1.1');
  utl_http.set_header(req, 'content-type', 'application/json');
  res := utl_http.get_response(req);
  utl_http.end_response(res);

END;

Как передать недавно добавленную / обновленную строку в качестве параметра на запрос http? Http-запрос, который вызывается, является Java RESTful веб-сервисом, в котором я буду обрабатывать вновь добавленную / обновленную строку.

1 Ответ

1 голос
/ 29 апреля 2020

На столбцы из новой или обновленной строки можно ссылаться, например: new.column_name в триггере. Вам придется самостоятельно создать полезную нагрузку JSON и поместить ее в заголовок.

Что произойдет, если ваша служба REST не работает? Если ваш триггер выдает ошибку, как написано, транзакция завершится неудачно и обновление будет откатано. Это желаемый результат?

Также имейте в виду, что даже если она работает, транзакция не будет завершена, пока не получен ответ от вызова REST, поэтому такая схема может привести к большой задержке в вашем приложении (независимо от того, обновляется ли таблица) , Возможно, вы захотите проверить вызов pragma aut автономный_транзакция, если вы не хотите, чтобы эта зависимость или задержка.

...