JDBC选择序列

时间:2014-10-07 08:38:07

标签: jdbc transactions mule

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

1 个答案:

答案 0 :(得分:0)

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