sql >> Databáze >  >> RDS >> Mysql

MySQL - JDBC - SELECT a DELETE současně

Pokud chcete, aby váš SELECT zablokoval následující čtení na tomto řádku, dokud jej nesmažete, pak, jak Mark uvedl ve svém komentáři, budete muset

  • povolit transakce (setAutoCommit(false) )
  • nastavit izolaci transakcí na SERIALIZABLE a
  • použijte SELECT ... FOR UPDATE

Tento ukázkový kód mi funguje:

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. Oracle SQL GROUP BY není nápověda k výrazu GROUP BY

  2. Dobrá prevence před injekcí MYSQL?

  3. ORA-12557 TNS:adaptér protokolu nelze zavést

  4. Únikové hodnoty v Mysqljs