sql >> Database >  >> RDS >> Mysql

MySQL - JDBC - SELECT en DELETE tegelijkertijd

Als u wilt dat uw SELECT volgende leesbewerkingen op die rij blokkeert totdat u deze verwijdert, moet u, zoals Mark aangeeft in zijn opmerking,

  • transacties inschakelen (setAutoCommit(false) )
  • stel transactie-isolatie in op SERIALIZABLE, en
  • gebruik SELECT ... FOR UPDATE

Deze voorbeeldcode werkt voor mij:

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. PostgreSQL - Gegevens verwijderen die ouder zijn dan een uur en vervolgens nieuwe gegevens invoegen in dezelfde tabel

  2. een verbinding maken in eclipse - ClassNotFoundException:com.mysql.jdbc.Driver

  3. Programmatisch databasestructuur maken en bijwerken

  4. Oracle 11g Release 2 Enterprise Edition installeren op Windows 7 32-bits