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

Lås MySQL-valgrækken, indtil UPDATE er blevet kørt på den?

Sæt en transaktion omkring de to forespørgsler, og brug TIL OPDATERING mulighed i SELECT forespørgsel for at låse de rækker, den undersøgte. Enhver anden forbindelse, der forsøger at læse den række, vil blive suspenderet, indtil transaktionen er begået.

Sørg for, at du har et indeks på de kolonner, du tester i WHERE klausul, så den behøver ikke at scanne og låse alle de rækker, den har tjekket, før den finder den, du ønsker.

START TRANSACTION;SELECT @id :=`id`,`item` FRA `queue_items` HVOR `processed_at` ER NULL OG `completed_at` ER NULL ORDER BY `id` ASC LIMIT 1FOR UPDATE;OPDATERING `queue_items ` SET `processed_at` =@processedAt WHERE `id` =@idCOMMIT; 


  1. Hvordan tilføjes ojdbc7 til Java-webapp fra Gradle?

  2. Hvordan UPSERT (FLETT, INDSÆT ... PÅ DUPLIKAT OPDATERING) i PostgreSQL?

  3. Mysql datetime bliver 0000-00-00 00:00:00 i mysql version 5.6

  4. Sådan beregnes glidende gennemsnit i MySQL