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. जावा में utf8 के साथ समस्या

  2. pyodbc यूनिकोड डेटा के साथ सही ढंग से व्यवहार नहीं करता है

  3. MySQL अन्य तालिका में जानकारी का उपयोग करके फ़ील्ड को अपडेट करता है

  4. किसी शर्त के साथ पंक्तियों की गिनती करते समय मुझे MySQL में OR NULL की आवश्यकता क्यों है?

  5. कई से कई अंदर कई से कई टेबल