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



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

在插入模式下,数据库连接器具有三个属性 autoGenerated Keys和 autoGenerated KeysColumnIndexes 或 autoGenerated KeysColumnNames

除了有效负载中的行计数外,它还返回 Insert 的自动生成的值

骡子文档在这里

我使用

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(或数据库显示受影响行数的方式(?

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

另外,您是否检查过它是否确实在数据库中插入了该行?
您是否检查过实际上您正在使用数据库生成的正确ID进行选择?

我建议您进行分步调试以检查此信息。

希望对您有所帮助!

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

最新更新