我想for update使用JDBC在Java中创建一个select语句,但不确定如何完成.
如果您不熟悉更新,可以在此处阅读 https://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-FOR-UPDATE-SHARE
例如,我有以下select语句
我的选择声明
select email from email_accounts where already_linked = false order by random() limit 1
Run Code Online (Sandbox Code Playgroud)
我的更新声明
UPDATE email_accounts set already_linked = true, account_link_timestamp = now() where email = ?
Run Code Online (Sandbox Code Playgroud)
在使用JDBC时如何使用JDBC完成这项工作for update?
我正在尝试使用 select for update 来实现悲观锁定,因为我希望其他线程等待,直到释放所选行上的锁。我所理解的部分是在经历了多个线程Spring JDBC select for update和各种类似的线程之后,如果 select 和 update 发生在同一方法中,因此它们是同一事务的一部分,那么这是可以实现的。
在我的例子中,问题是我有一个用于 DAO 功能的 JAR,其中有一个selectforUpdate方法可用,并且有一个单独的更新方法可用,这两种方法都有一个 finally 块,其中包含
resultSet.close();
statement.close();
connection.close();
Run Code Online (Sandbox Code Playgroud)
现在我正在努力找出是否有一种方法可以从 JAR 外部使用这两种方法,也许可以通过用@Transactional注释来注释我的方法并使其以某种方式工作。因此只有在执行 update 方法后才会释放该锁。