在一句话中:Statement.getGeneratedKeys()
偶尔会返回一个空的ResultSet
,而我正试图找出原因。
背景:我正在追踪用户'有关订单及其部分商品的要求。我有两个表,称之为Header
和Detail
。要正确链接标题和详细信息,Header
有一个名为SERIAL
的{{1}}列,我在将行插入request_id
时使用。这已经很好地工作了很长时间(据我所知),但最近我注意到有时,Detail
返回的ResultSet
为空。
为了澄清,这里是代码(识别为安全而删除的详细信息):
getGeneratedKeys()
再次,一年多以来一直工作正常,但我发现 - 在同一天 - 取得了一些成功但主要是失败。第二天再次工作,没有一次失败,也没有例外。
我希望有人可以帮忙解释一下。如果它有所不同,我就通过JDBC与Informix数据库进行交谈。
答案 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.
这似乎对他有用。