PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

изберете за актуализация с JDBC?

Първо добавяте for update към вашия избор (и другите ви колони, които искате да актуализирате), и след това ги актуализирате. Освен това, както е отбелязано в коментарите, уверете се, че вашият getConnection връща Connection без автокомит. И трябва да зададете Statement тип за превъртане и CONCUR_UPDATABLE . Нещо като,

String[] colNames = { "email", "already_linked", "account_link_timestamp" };
String query = "select " + Stream.of(colNames).collect(Collectors.joining(", "))
        + "from email_accounts where already_linked = false for update";
try (Connection conn = getConnection(); // Make sure conn.setAutoCommit(false);
        Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 
                ResultSet.CONCUR_UPDATABLE);
        ResultSet rs = stmt.executeQuery(query)) {
    while (rs.next()) {
        // Get the current values, if you need them.
        String email = rs.getString(colNames[0]);
        boolean linked = rs.getBoolean(colNames[1]);
        Timestamp time = rs.getTimestamp(colNames[2]);
        // ...
        rs.updateBoolean(colNames[1], true);
        rs.updateTimestamp(colNames[2], //
                new Timestamp(System.currentTimeMillis()));
        rs.updateRow();
    }
} catch (SQLException e) {
    e.printStackTrace();
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Множество индекси срещу единичен индекс на множество колони в postgresql

  2. Как да увеличим максималните връзки в postgres?

  3. Релси - Използване на съединение с асоциации с потребителски имена

  4. PostgreSQL към XML с 3 таблици

  5. GUI инструмент за PostgreSQL