Postgresql:在同一事务中读取未提交的数据

时间:2014-01-10 09:21:00

标签: java postgresql jdbc transactions

问题是通过JDBC使用PostgreSQL:

  1. 启动交易(隐含)
  2. 插入一行
  3. 选择涉及您刚刚插入的行
  4. 其他
  5. 提交
  6. 并且似乎select的结果不考虑插入。

    实际需要是在第一次插入时我在表中插入当前时间戳(我想使用db one,而不是时间服务器的日期时间!!)并且我需要在另一个插入中使用该值在同一交易中的另一个表中。

1 个答案:

答案 0 :(得分:2)

如果select没有看到insert生成的行,那么您运行的代码并不符合您的想法。这种情况真正发生的唯一方法是:

  • 每个语句都以自动提交模式运行,insert失败,您可以吞下该异常。

  • 每个语句都在自己的 new 事务中运行,该事务保持打开状态且未提交 - 因此insertselect处于不同的尚未提交的tx中{1}}。

  • insertselect不按您的意愿行事。

要告诉你更多信息,有必要查看代码 - 客户端代码和生成的SQL。