将当前行作为参数发送到 Oracle DB 触发器中的 http 请求
Send current row as a parameter to http request in Oracle DB Trigger
每当通过 Oracle 数据库触发器
在 TEST_TABLE 上发生插入或更新时,我使用以下代码调用 http 调用
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;
如何将新 added/updated 行作为参数传递给 http 请求?正在调用的 Http 请求是一个 Java RESTful Web 服务,我将在其中处理新的 added/updated 行。
新行或更新行中的列可以像触发器中的 :new.column_name 一样被引用。您必须自己构建 JSON 有效负载并将其放置在 header 中。
如果您的 REST 服务出现故障会怎样?如果您的触发器抛出错误,如所写,事务将失败并且更新将回滚。这是想要的结果吗?
另请注意,即使它有效,交易也不会在收到 REST 调用的响应之前完成,因此这种安排可能会给您的应用程序带来大量延迟(无论更新 table).如果您不想要这种依赖或延迟,您可能需要检查 "pragma autonomous_transaction" 调用。
每当通过 Oracle 数据库触发器
在 TEST_TABLE 上发生插入或更新时,我使用以下代码调用 http 调用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;
如何将新 added/updated 行作为参数传递给 http 请求?正在调用的 Http 请求是一个 Java RESTful Web 服务,我将在其中处理新的 added/updated 行。
新行或更新行中的列可以像触发器中的 :new.column_name 一样被引用。您必须自己构建 JSON 有效负载并将其放置在 header 中。
如果您的 REST 服务出现故障会怎样?如果您的触发器抛出错误,如所写,事务将失败并且更新将回滚。这是想要的结果吗?
另请注意,即使它有效,交易也不会在收到 REST 调用的响应之前完成,因此这种安排可能会给您的应用程序带来大量延迟(无论更新 table).如果您不想要这种依赖或延迟,您可能需要检查 "pragma autonomous_transaction" 调用。