【发布时间】:2018-03-23 05:02:33
【问题描述】:
我遇到了 mule 数据库连接器的问题。我有一个接收带有一些数据的 JSON 的流,我获取一些数据并使用它将记录插入数据库。插入记录时,数据库会生成自己的 ID。现在在同一流程中,我想选择该 ID,但有时它不会返回任何结果。是否有可能当我在插入后立即执行“选择”查询时,它尚未插入/尚未生成 ID?我该怎么做才能使其正常工作?如何使“选择”数据库连接器等待该数据?
【问题讨论】:
标签: mule integration
我遇到了 mule 数据库连接器的问题。我有一个接收带有一些数据的 JSON 的流,我获取一些数据并使用它将记录插入数据库。插入记录时,数据库会生成自己的 ID。现在在同一流程中,我想选择该 ID,但有时它不会返回任何结果。是否有可能当我在插入后立即执行“选择”查询时,它尚未插入/尚未生成 ID?我该怎么做才能使其正常工作?如何使“选择”数据库连接器等待该数据?
【问题讨论】:
标签: mule integration
在插入模式下,数据库连接器具有三个属性 autoGeneratedKeys 和 autoGeneratedKeysColumnIndexes 或 autoGeneratedKeysColumnNames。
除了有效负载中的行数,它还返回自动生成的插入值
【讨论】:
我使用 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 的默认设置)并且它具有适当的连接超时,它应该在进入下一个连接器时添加信息。
另外,您是否检查过它是否确实在数据库中插入了该行?
您是否检查过实际上您正在使用 db 生成的正确 ID 进行选择?
我建议您逐步调试以检查此信息。
希望对你有帮助!
【讨论】:
您应该在插入记录后执行“提交”,否则该记录不可用于立即选择。我同意 user3366906 回答。
【讨论】: