PostgreSQL是否支持;选择。。。更新…”的信息;SQL?

PostgreSQL是否支持;选择。。。更新…”的信息;SQL?,postgresql,Postgresql,我目前正在使用带有JDBC驱动程序的“PostgreSQL 9.0.4”数据库:“PostgreSQL-9.0-801.jdbc4.jar” 我使用“SELECT…FOR UPDATE OF…”子句实现了以下JDBC SQL,该子句检索列值(long)并通过在同一事务中递增来更新值。 我需要返回长值,因此我需要使用SELECT Sql final PreparedStatement preparedStatement = _connection.prepareStatement(

我目前正在使用带有JDBC驱动程序的“PostgreSQL 9.0.4”数据库:“PostgreSQL-9.0-801.jdbc4.jar

我使用“SELECT…FOR UPDATE OF…”子句实现了以下JDBC SQL,该子句检索列值(long)并通过在同一事务中递增来更新值。
我需要返回长值,因此我需要使用SELECT Sql

final PreparedStatement preparedStatement = _connection.prepareStatement(
              "select value from sequence where table_name='JOB' for update of value",
                  ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);

 long ret;
 try {
      final ResultSet resultSet = preparedStatement.executeQuery();
      resultSet.next();
      ret = resultSet.getLong(1);
      resultSet.updateLong(1, ret + 1);
      resultSet.updateRow();
 } catch (SQLException ex) {
      ex.printStackTrace(); 
 } 
finally {
     resultSet.close();
     preparedStatement.close();
 }
 return ret;
所有其他数据库,例如MySQL、Oracle、MS-SQL、Derby都可以很好地使用这种SQL,但PostgreSQL总是抛出以下异常

     org.postgresql.util.PSQLException: ERROR: relation "value" in FOR UPDATE/SHARE clause not found in FROM clause
     Position: 68
我的表“sequence”中有正确创建的“value”列,因此这可能不是臭名昭著的区分大小写问题

这是否意味着Postgres不支持“选择…更新…”SQL语法?
在这种情况下,实现相同效果的最佳方式是什么(即选择并使用相同的事务更新)


非常感谢,是的。它是受支持的。但是语法是

用于更新[表格名称[,…][NOWAIT]

您可以在此处看到更多信息:


是-它可以工作。实际上,我还必须指定“table_name”列作为SELECT语句的一部分。这是最新的声明。“从序列中选择值、表名,其中表名='JOB'用于序列更新”。谢谢。