关于YSQL文档:doc在最后一段中提到:
...有时候,使用SELECT LAST_INSERT_ID()查询会很棘手,因为该函数的值是作用于连接的。因此,如果在同一连接上发生某些其他查询,则该值将被覆盖。另一方面,getGeneratedKeys()方法由Statement实例确定范围,因此即使其他查询在同一连接上发生,也不在同一Statement实例上,也可以使用它。
当我在一个完全分布式的环境中工作时,对我来说非常重要的是不要碰巧从数据库中取回错误的密钥......
springJDBC正在使用以下哪些方法
我使用的是弹簧版3.2.1.RELEASE
,但我没有开采升级到最新版本。
答案 0 :(得分:0)
好。正如所建议的,我挖掘了代码,直到我到达这条小线。
ResultSet keys = ps.getGeneratedKeys();
从PreparedStatementCallback
匿名类内部调用。
因此,出于所有意图和目的,该功能:
int org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder) throws DataAccessException
这是一个线程/进程安全操作