【问题标题】:JDBC selecting a sequenceJDBC 选择序列
【发布时间】:2014-10-07 08:38:06
【问题描述】:

我需要调用 web 服务,并且需要将响应插入到以序列为键的 DB 父表中。此外,我需要选择刚刚插入的序列号,并将数据插入到 2 个子表中,全部在一个事务中。这怎么可能实现?我可以在事务中进行所有插入,但我需要在第一次插入父表后进行选择以获取序列。任何帮助将不胜感激。

【问题讨论】:

    标签: jdbc transactions mule


    【解决方案1】:

    您可以通过将所有调用包装到一个事务中来实现此目的。有几种异常策略可用,但听起来简单的回滚策略对您有用。如果事务块中的任何调用产生异常,就会触发异常策略。请记住,如果您希望 Web 服务调用在失败时引发异常,则需要检查状态代码并在它不是您所期望的情况下生成异常。

    <transactional action="ALWAYS_BEGIN" doc:name="Transactional">
    
            <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="getSequenceNumber" queryTimeout="-1" connector-ref="myConnector" doc:name="Database">
                <jdbc-ee:transaction action="BEGIN_OR_JOIN" />
            </jdbc-ee:outbound-endpoint>
            <http:outbound-endpoint exchange-pattern="request-response" host="${webServiceHost}" 
                port="${webServicePort}" 
                path="${webServicePath}" 
                method="GET" doc:name="HTTP">
             </http:outbound-endpoint>
    
             <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="createRecord" queryTimeout="-1" connector-ref="myConnector" doc:name="Database">
                <jdbc-ee:transaction action="BEGIN_OR_JOIN" />
             </jdbc-ee:outbound-endpoint>
    
            <rollback-exception-strategy doc:name="Rollback Exception Strategy" />
        </transactional>
    

    您可以在此处阅读有关更多交易的更多信息:http://www.mulesoft.org/documentation/display/current/Transaction+Management

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多