相关疑难解决方法(0)

用JDBC选择"for update"?

我想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

java postgresql jdbc select-for-update

1
推荐指数
1
解决办法
4211
查看次数

“选择更新”并使用悲观锁定进行更新

我正在尝试使用 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 方法后才会释放该锁。

java spring jdbc pessimistic-locking

1
推荐指数
1
解决办法
1万
查看次数