我遇到了mule数据库连接器的问题。我有一个接收带有一些数据的JSON的流程,我获取一些数据并使用它将记录插入数据库。插入记录时,数据库会生成自己的ID。现在在同一个流程中我想选择该ID,但有时它不会返回任何结果。是否有可能当我在插入后立即执行'select'查询时,它未插入/尚未生成ID?我该怎么做才能使它正常工作?如何使'select'数据库连接器等待该数据?
答案 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
的自动生成值答案 2 :(得分:0)
首先:
您是否检查过数据库连接器在响应中检索到1(或者数据库显示受影响的行数的方式)?
如果您的流配置为异步(默认为mule)并且具有正确的连接超时,则应该在进入下一个连接器时添加该信息。
另外,你确定它是否确实在db中插入了那行? 你确实检查过你正在使用db生成的正确ID进行选择吗?
我建议您逐步调试以检查此信息。
希望它有所帮助!
答案 3 :(得分:0)
您应该在插入记录后执行“提交”,否则该记录不可用于立即选择。我同意用户3366906答案。