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

MySQL परमाणु संचालन और टेबल लॉकिंग

आप अपने डिजाइन के बहुत करीब हैं, लेकिन वहां बिल्कुल नहीं हैं।

सबसे पहले, आपकी ईवेंट तालिका में आपके ईवेंट के लिए अभी भी उपलब्ध टिकटों की संख्या (जो कुछ भी आप चाहते हैं उसके अतिरिक्त) रखने की आवश्यकता है।

दूसरा, आपकी एस्क्रो तालिका में एक DATETIME कॉलम होना चाहिए जो यह दर्शाता हो कि एस्क्रो कब समाप्त होता है। जब भी टिकट एस्क्रो में जाते हैं तो आपको वह मान सेट करना होगा।

तीसरा, एस्क्रो में टिकट डालने के लेन-देन की जरूरत है

  1. इवेंट पंक्ति को लॉक करें।
  2. उपलब्ध टिकट कॉलम पढ़ें। (यदि पर्याप्त न हो तो निरस्त करें)
  3. एस्क्रो टेबल में एक पंक्ति डालें
  4. उपलब्ध टिकट कॉलम को घटाने के लिए इवेंट पंक्ति को अपडेट करें।
  5. इवेंट पंक्ति को अनलॉक करें।

चौथा, बिक्री को पूरा करने की कार्रवाई के लिए एस्क्रो पंक्ति को हटाना और एक बेची गई टिकट पंक्ति सम्मिलित करना आवश्यक है। यह कठिन नहीं है।

पांचवां, आपको एस्क्रो क्लीनअप ऑपरेशन की आवश्यकता है। इसके लिए उन सभी एस्क्रो पंक्तियों की तलाश करनी होगी जो समाप्त हो चुकी हैं (जिनकी अतीत में समाप्ति तिथि है) और प्रत्येक के लिए:

  1. संबंधित ईवेंट पंक्ति को लॉक करें।
  2. एस्क्रो टेबल से एस्क्रो टिकटों की संख्या पढ़ें
  3. एस्क्रो तालिका पंक्ति हटाएं।
  4. उपलब्ध टिकट कॉलम को बढ़ाने के लिए ईवेंट पंक्ति को अपडेट करें।
  5. इवेंट पंक्ति को अनलॉक करें।

चाल उपलब्ध . की संख्या रखने की है टिकटों का रखरखाव इस तरह से किया जाता है जो सही ढंग से इंटरलॉक किया गया हो, इसलिए उपयोगकर्ताओं के बीच दौड़ की स्थिति आपके ईवेंट की अधिक बिक्री नहीं करती है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. केवल एक तिथि का उपयोग करके DATETIME कॉलम से कैसे चयन करें?

  2. वर्चर के रूप में संग्रहीत दशमलव को डेटाटाइम में कनवर्ट करें

  3. MySQL कनेक्टर 6.7.4 और एंटिटी फ्रेमवर्क 5 अपवाद

  4. MySql ने GROUP_CONCAT का उपयोग करके शामिल होने में मानों को डुप्लिकेट किया

  5. MySQL में शामिल हों और COUNT () एकाधिक तालिकाओं पर