Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ekskluzywna transakcja Laravel 4 z aktualizacją i wyborem

Zapomniałbym spróbować zablokować tabelę i/lub zrobić to w transakcji, są na to lepsze wzorce:

  • Wygeneruj unikalny token
  • Przypisz ten token do następnego dostępnego rekordu
  • Przeczytaj, który wiersz otrzymał token i przetwórz go

W ten sposób nie potrzebujesz żadnych blokad ani transakcji (ponieważ DB przypisze Twój token TYLKO do JEDNEGO nieużywanego rekordu).

Pseudo-kod:

$token = time(); //Only you have very low concurrency. Otherwise use something more unique, like a GUID or an identity value from a tokens table.

EXEC SQL: "UPDATE mytable SET token = $token WHERE token IS NULL LIMIT 1"

EXEC SQL: "SELECT id FROM mytable WHERE token = $token"

process($id);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Maksymalna długość MySQL i GROUP_CONCAT()

  2. Prawidłowe indeksowanie przy użyciu operatora OR

  3. MYSQL oblicza średnią z liczenia

  4. Nie można przekonwertować varchar na datetime w MySql

  5. Generator RSS z funkcją buforowania