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

MySQL - JDBC - SELECT и DELETE едновременно

Ако искате вашият SELECT да блокира последващи четения на този ред, докато не го изтриете, тогава, както Марк посочва в своя коментар, ще трябва да

  • разрешаване на транзакции (setAutoCommit(false) )
  • задайте изолацията на транзакцията на SERIALIZABLE и
  • използвайте SELECT ... FOR UPDATE

Този примерен код работи за мен:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да получа процента от общия брой редове с mysql за група?

  2. MySQL, кой е по-ефективен дълъг текст, текст или blob? Подобряване на ефективността на вложката

  3. Как да СЪЕДИНИТЕ два FK от една маса към друга маса?

  4. Прочетете текстов файл, разделен с табулатори, в MySQL таблица с PHP

  5. Как да създавате и поддържате MySQL бази данни в cPanel