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

Laravel 4 изключителна транзакция с актуализация и избор

Щях да забравя да опитам да заключа таблицата и/или да го направя в транзакция, има по-добри модели за това:

  • Генерирайте уникален маркер
  • Присвоете този маркер към следващия наличен запис
  • Прочетете кой ред е получил токена и го обработете

По този начин изобщо не се нуждаете от заключване и транзакции (защото DB ще присвои токена ви САМО на ЕДИН неизползван запис).

Псевдокод:

$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. MySQL Изберете редове при първото появяване на всяка уникална стойност

  2. Пространствен индекс в MySQL - ГРЕШКА - Не може да се получи геометричен обект от данните, които изпращате в полето GEOMETRY

  3. Съхранение на излишни външни ключове, за да се избегнат присъединявания

  4. Бавната заявка на Mysql:INNER JOIN + ORDER BY причинява сортиране на файлове

  5. Как да покажа дата като iso 8601 формат с PHP