【问题标题】:Does mysql last_insert_id() work for connection pool?mysql last_insert_id() 是否适用于连接池?
【发布时间】:2014-07-02 09:54:51
【问题描述】:

我有一个 bigint 类型的自动递增列。调用 mysql_insert_id() 可以很好地获取先前插入的连接 ID。即使使用 tomcat 容器中的连接池,它是否也能正常工作(识别最后插入的 id)?

【问题讨论】:

  • 在您调用close() 之前,从池中获得的连接是您的,除了它是从池中获得的,它的工作方式(或:应该工作)与“正常”连接相同。

标签: java servlets jdbc connection-pooling


【解决方案1】:

不要使用这样的特定于数据库的代码,它只会降低您的代码的可移植性。而是在执行更新时使用Statement.RETURN_GENERATED_KEYS 选项。

这是您搜索的开始:sql jdbc getgeneratedkeys returns column "id" not found, column type unknown

【讨论】:

  • 感谢您的建议。
  • getGeneratedKeys 是否返回当前连接的最后一个密钥?并发问题是否由实现处理?
  • 它同时返回执行的最后一条语句的生成键。您肯定想在它们生成时获取它们而不是稍后获取它们吗?
  • 是的。我想知道在插入期间获取密钥是否在事务的原子部分。
  • 当然。如果您不能相信生成的密钥实际上是数据库中的密钥,那将毫无用处。
猜你喜欢
  • 1970-01-01
  • 2023-04-11
  • 2010-11-13
  • 2018-02-14
  • 1970-01-01
  • 2021-05-01
  • 2013-08-20
  • 2020-06-03
  • 1970-01-01
相关资源
最近更新 更多