sql >> Database teknologi >  >> RDS >> Mysql

MySQL - JDBC - VÆLG og SLET på samme tid

Hvis du ønsker, at din SELECT skal blokere efterfølgende læsninger på den række, indtil du sletter den, skal du, som Mark angiver i sin kommentar,

  • aktiver transaktioner (setAutoCommit(false) )
  • indstil transaktionsisolering til SERIALIZABLE, og
  • brug SELECT ... FOR UPDATE

Denne eksempelkode virker for mig:

conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
conn.setAutoCommit(false);

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT token_id FROM tokens ORDER BY token_id LIMIT 1 FOR UPDATE");
rs.next();
int token_id = rs.getInt("token_id");
System.out.printf("Got %d.%n", token_id);
PreparedStatement ps = conn.prepareStatement("DELETE FROM tokens WHERE token_id=?");
ps.setInt(1, token_id);
ps.executeUpdate();
conn.commit();


  1. Sådan konfigureres MySQL under XAMPP til at arbejde med IPv6

  2. Sådan filtreres dropdown-listeværdier efter en anden dropdown-liste i ASP.NET, c#

  3. Hjælp til PHP/MySQL-array har brug for

  4. Sådan opretter du bruger med superbrugerprivilegier i PostgreSQL