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

Mule ESB Database connector - select after insert

我遇到了 mule 数据库连接器的问题。我有一个接收 JSON 和一些数据的流程,我获取了一些数据并使用它来将记录插入数据库。数据库在插入记录时生成自己的 ID。现在在同一流程中,我想 select 该 ID,但有时 return 没有任何结果。有没有可能当我在插入后立即执行 'select' 查询时,还没有 inserted/hasn 生成 ID?我该怎么做才能使其正常工作?如何让 'select' 数据库连接器等待该数据?

首先:

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

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

此外,您是否检查过它是否确实在数据库中插入了该行?
您是否检查过您实际上是在使用 db 生成的正确 ID 执行 select?

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

希望对您有所帮助!

我使用 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

在插入模式下,数据库连接器具有三个属性 autoGeneratedKeysautoGeneratedKeysColumnIndexesautoGeneratedKeysColumnNames .

除了负载中的行数,它returns Insert

的自动生成值

Mule doc here

您应该在插入记录后执行 "Commit" 否则该记录不可用于立即 Select。我同意 user3366906 的回答。