getGeneratedKeys返回一个空的ResultSet

时间:2015-09-08 00:33:18

标签: java sql jdbc primary-key informix

在一句话中:Statement.getGeneratedKeys()偶尔会返回一个空的ResultSet,而我正试图找出原因。

背景:我正在追踪用户'有关订单及其部分商品的要求。我有两个表,称之为HeaderDetail。要正确链接标题和详细信息,Header有一个名为SERIAL的{​​{1}}列,我在将行插入request_id时使用。这已经很好地工作了很长时间(据我所知),但最近我注意到有时Detail返回的ResultSet为空。

为了澄清,这里是代码(识别为安全而删除的详细信息):

getGeneratedKeys()

再次,一年多以来一直工作正常,但我发现 - 在同一天 - 取得了一些成功但主要是失败。第二天再次工作,没有一次失败,也没有例外。

我希望有人可以帮忙解释一下。如果它有所不同,我就通过JDBC与Informix数据库进行交谈。

1 个答案:

答案 0 :(得分:0)

我将此问题发布到IIUG,我在那里得到的回复指出了Informix(APAR IC98247)中的一个错误,该错误修复的版本晚于我正在使用的版本。

我现在正在尝试的解决方案,是由处于同一困境的朋友推荐的,是从

的变体插入的行中读取request_id
SELECT max(request_id) from Header where order_id = ${orderId} ;
// Avoid race condition, accidentally reading the last row inserted by
//  another thread.

这似乎对他有用。