Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PILIH dan kunci satu baris lalu PERBARUI

Yang perlu Anda lakukan adalah menambahkan semacam kunci di sini untuk mencegah kondisi balapan seperti yang Anda buat:

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

Itu akan menghindari penguncian ganda.

Untuk lebih meningkatkannya lagi, buat kolom kunci yang dapat Anda gunakan untuk mengklaim:

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

Ini membutuhkan VARCHAR , diindeks processing kolom yang digunakan untuk mengklaim yang memiliki default NULL . Jika Anda mendapatkan baris yang dimodifikasi dalam hasil, Anda telah mengklaim catatan dan dapat pergi dan bekerja dengannya dengan menggunakan:

SELECT * FROM persons WHERE processing=:processing_uuid

Setiap kali Anda mencoba dan mengklaim, buat kunci UUID klaim baru.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Salin data antara database yang berbeda (keduanya didukung jdbc)

  2. Apakah lebih baik menggunakan nilai kosong sebagai '' atau sebagai NULL?

  3. MySql - Bagaimana cara memperbarui bagian dari string?

  4. Apakah ada kelas di MySql yang seperti Kelas BulkCopy di Sql Server 2005?

  5. Pembaruan basis data Dot Net Entity Framework tidak membuat tabel di basis data mysql