Mule ESB数据库连接器 - 插入后选择

时间:2018-03-20 13:49:55

标签: mule integration

我遇到了mule数据库连接器的问题。我有一个接收带有一些数据的JSON的流程,我获取一些数据并使用它将记录插入数据库。插入记录时,数据库会生成自己的ID。现在在同一个流程中我想选择该ID,但有时它不会返回任何结果。是否有可能当我在插入后立即执行'select'查询时,它未插入/尚未生成ID?我该怎么做才能使它正常工作?如何使'select'数据库连接器等待该数据?

4 个答案:

答案 0 :(得分:1)

我使用oracle连接器做了类似的步骤,并且对存储过程工作得很好。步骤将是

a. Call Stored procedure 1
1. Call stored procedure to insert record based on parameters.
2. Commit the transaction.
3. Return 1(success) or 0(fail) based on outcome

b. Call Stored procedure 2 only if you get 1 (success) from Stored procedure 
1. Retrieve id for the record inserted in stored procedure 1

答案 1 :(得分:1)

在插入模式下,数据库连接器有三个属性 autoGeneratedKeys autoGeneratedKeysColumnIndexes autoGeneratedKeysColumnNames

除了有效负载中的行数,它还会返回Insert

的自动生成值

Mule doc here

答案 2 :(得分:0)

首先:

您是否检查过数据库连接器在响应中检索到1(或者数据库显示受影响的行数的方式)?

如果您的流配置为异步(默认为mule)并且具有正确的连接超时,则应该在进入下一个连接器时添加该信息。

另外,你确定它是否确实在db中插入了那行? 你确实检查过你正在使用db生成的正确ID进行选择吗?

我建议您逐步调试以检查此信息。

希望它有所帮助!

答案 3 :(得分:0)

您应该在插入记录后执行“提交”,否则该记录不可用于立即选择。我同意用户3366906答案。