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

VÆLG og lås en række og derefter OPDATERE

Det du skal gøre er at tilføje en form for lås her for at forhindre løbsforhold som den, du har oprettet:

UPDATE persons SET processing=1 WHERE id=:id AND processing=0

Det vil undgå at dobbeltlåse den.

For at forbedre dette endnu mere skal du oprette en låsekolonne, du kan bruge til at gøre krav på:

UPDATE persons
  SET processing=:processing_uuid
  WHERE processing IS NULL
  LIMIT 1

Dette kræver en VARCHAR , indekseret processing kolonne, der bruges til at påstå, der har en standard på NULL . Hvis du får en række ændret i resultaterne, har du gjort krav på en post og kan gå og arbejde med den ved at bruge:

SELECT * FROM persons WHERE processing=:processing_uuid

Hver gang du prøver at gøre krav, skal du generere en ny krav UUID-nøgle.



  1. At vælge en kolonne fra en tabel i MySQL to gange

  2. Kaldning af en lagret procedure inden for en lagret procedure

  3. Hvordan giver man position nul for spinner en promptværdi?

  4. alternativ til bitmapindeks i postgresql