Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक पंक्ति को चुनें और लॉक करें और फिर अपडेट करें

आपको जो कुछ करने की ज़रूरत है वह यह है कि आपके द्वारा बनाई गई दौड़ की स्थिति को रोकने के लिए यहां किसी प्रकार का लॉक जोड़ें:

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

इससे इसे डबल-लॉक करने से बचा जा सकेगा।

इसे और बेहतर बनाने के लिए, एक लॉक कॉलम बनाएं जिसका उपयोग आप दावा करने के लिए कर सकते हैं:

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

इसके लिए VARCHAR . की आवश्यकता है , अनुक्रमित processing यह दावा करने के लिए उपयोग किया जाने वाला कॉलम है कि NULL . का डिफ़ॉल्ट है . यदि आप परिणामों में एक पंक्ति को संशोधित करते हैं, तो आपने एक रिकॉर्ड का दावा किया है और आप इसका उपयोग करके इसके साथ काम कर सकते हैं:

SELECT * FROM persons WHERE processing=:processing_uuid

हर बार जब आप कोशिश करते हैं और दावा करते हैं, तो एक नई दावा UUID कुंजी उत्पन्न करें।



  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 तालिका में लापता पंक्तियों (तारीखों) को खोजने के लिए?

  3. त्रुटि #1442 MySQL - एक ट्रिगर बनाना

  4. क्या पीडीओ में MySQL की multi_query() के बराबर है?

  5. आईपी-आधारित कोल्डाउन अवधि प्रदान करने का एक पोर्टेबल तरीका?