Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Giao dịch độc quyền của Laravel 4 với cập nhật và lựa chọn

Tôi đã quên cố gắng khóa bảng và / hoặc thực hiện nó trong một giao dịch, có một mẫu tốt hơn cho việc này:

  • Tạo một mã thông báo duy nhất
  • Gán mã thông báo đó cho bản ghi có sẵn tiếp theo
  • Đọc hàng nào có mã thông báo và xử lý nó

Bằng cách đó, bạn hoàn toàn không cần khóa và giao dịch (bởi vì DB sẽ chỉ định mã thông báo của bạn CHỈ cho MỘT bản ghi không sử dụng).

Mã giả:

$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. Đổi tên các cột khóa ngoại trong MySQL

  2. Bạn có nên sử dụng các câu lệnh đã chuẩn bị sẵn chỉ cho việc trốn thoát của họ không?

  3. bộ nhớ cache truy vấn không hoạt động

  4. Tôi có thể sử dụng VARCHAR làm KHÓA CHÍNH không?

  5. (cần tư vấn) Nói chuyện với cơ sở dữ liệu máy chủ MySQL từ Ứng dụng Android của tôi