JDBC选择序列

JDBC选择序列,jdbc,transactions,mule,Jdbc,Transactions,Mule,我需要调用一个webservice,并且需要将响应插入到一个DB父表中,该表的键是序列。我还需要选择刚刚插入的序列号,并在一个事务中将数据插入到两个子表中。如何做到这一点?我可以在一个事务中执行所有插入操作,但我需要执行select以在第一次插入到父表之后获取序列。任何帮助都将不胜感激。您可以通过将所有呼叫打包到一个事务中来实现这一点。有几种异常策略可用,但听起来一种简单的回滚策略适合您。如果事务块中的任何调用生成异常,将触发异常策略。请记住,如果希望web服务调用在失败时引发异常,则需要检查状

我需要调用一个webservice,并且需要将响应插入到一个DB父表中,该表的键是序列。我还需要选择刚刚插入的序列号,并在一个事务中将数据插入到两个子表中。如何做到这一点?我可以在一个事务中执行所有插入操作,但我需要执行select以在第一次插入到父表之后获取序列。任何帮助都将不胜感激。

您可以通过将所有呼叫打包到一个事务中来实现这一点。有几种异常策略可用,但听起来一种简单的回滚策略适合您。如果事务块中的任何调用生成异常,将触发异常策略。请记住,如果希望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>

您可以在此处阅读有关更多交易的更多信息: