gpt4 book ai didi

postgresql - JDBC 事务的返回值

转载 作者:行者123 更新时间:2023-11-29 14:36:26 25 4
gpt4 key购买 nike

是否可以从 JDBC 事务中返回一个值?例如,假设我需要在应用以下事务后立即知道“key”对应的值是 1 还是 -1。对键执行后续 SELECT 会引入竞争条件,因为另一个并发进程可能会在第一个完成后但在执行后续 SELECT 之前执行相同的事务。交易能不能把值(value)还给我?

con.setAutoCommit(false)
val stmt = con.createStatement()
stmt.executeUpdate("UPDATE table SET value = CASE WHEN value > 0 THEN -1 ELSE 1 END WHERE key = 'key'");
con.commit();

最佳答案

您可以为此使用 RETURNING 子句。但是为了能够处理其中的值,您必须使用 execute() 而不是 executeUpdate()

con.setAutoCommit(false)
Statement stmt = con.createStatement()
stmt.execute("UPDATE table SET value = CASE WHEN value > 0 THEN -1 ELSE 1 END WHERE key = 'key' RETURNING value");
ResultSet rs = stmt.getResultSet();
if (rs.next()) {
int key = rs.getInt(1);
... do something with that
}

关于postgresql - JDBC 事务的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43970945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com