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

CHỌN và khóa một hàng rồi CẬP NHẬT

Những gì bạn cần làm là thêm một số loại khóa ở đây để ngăn chặn các điều kiện đua giống như điều bạn đã tạo:

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

Điều đó sẽ tránh bị khóa hai lần.

Để cải thiện điều này nhiều hơn nữa, hãy tạo một cột khóa mà bạn có thể sử dụng để xác nhận quyền sở hữu:

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

Điều này yêu cầu VARCHAR , xử lý processing được sử dụng để xác nhận quyền sở hữu có giá trị mặc định là NULL . Nếu bạn nhận được một hàng được sửa đổi trong kết quả, bạn đã xác nhận một bản ghi và có thể bắt đầu làm việc với nó bằng cách sử dụng:

SELECT * FROM persons WHERE processing=:processing_uuid

Mỗi lần bạn thử và xác nhận quyền sở hữu, hãy tạo một khóa UUID xác nhận quyền sở hữu mới.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy cập cơ sở dữ liệu mysql từ một hệ thống khác bằng java

  2. MySQL, json, JSON_ARRAY_APPEND - tại sao append không hoạt động trên 5.7.13?

  3. Capistrano:Làm thế nào để triển khai cơ sở dữ liệu MySQL cho một ứng dụng PHP?

  4. Tại sao loại này không hoạt động trong Solr?

  5. Thứ tự ngẫu nhiên nhất quán trong một truy vấn MySQL