sql >> Databasteknik >  >> RDS >> Mysql

Laravel 4 exklusiv transaktion med uppdatering och välj

Jag skulle glömma att försöka låsa bordet och/eller göra det i en transaktion, det finns bättre mönster för detta:

  • Generera en unik token
  • Tilldela den token till nästa tillgängliga post
  • Läs vilken rad som fick token och bearbeta den

På så sätt behöver du inga låsningar och transaktioner alls (eftersom DB tilldelar din token ENDAST EN oanvänd post).

Pseudokod:

$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. MySQL ENUM-typ kontra sammanfogningstabeller

  2. VÄLJ en kolumn om den andra är null

  3. Oracle:'=ANY()' kontra 'IN ()'

  4. Php/Mysql-datum sparat som '0000-00-00'