sql >> Databáze >  >> RDS >> PostgreSQL

vybrat aktualizaci pomocí JDBC?

Nejprve přidejte for update na váš výběr (a další sloupce, které chcete aktualizovat), a poté je aktualizujete. Také, jak je uvedeno v komentářích, zkontrolujte, zda máte getConnection vrátí Connection bez autocommit. A musíte nastavit Statement zadejte pro posouvání a CONCUR_UPDATABLE . Něco jako,

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. Vytváření úlohy DBMS_SCHEDULER pro oracle

  2. Nastavení vyšší velikosti Oracle načítání řádků zpomalí moji aplikaci?

  3. Jak časté jsou TIMESTAMPS u polí DATETIME?

  4. Jak nainstalovat MySQL 8 na Ubuntu