यहां 3 अलग-अलग तरीके दिए गए हैं:
परमाणु अद्यतन
update table set tries=tries+1 where condition=value;
और यह परमाणु रूप से किया जाएगा।
लेन-देन का उपयोग करें
यदि आपको पहले मूल्य का चयन करने और इसे अपने आवेदन में अपडेट करने की आवश्यकता है, तो आपको लेनदेन का उपयोग करने की आवश्यकता हो सकती है। इसका मतलब है कि आपको InnoDB का उपयोग करना होगा, MyISAM तालिकाओं का नहीं। आपकी क्वेरी कुछ इस तरह होगी:
BEGIN; //or any method in the API you use that starts a transaction
select tries from table where condition=value for update;
.. do application logic to add to `tries`
update table set tries=newvalue where condition=value;
END;
यदि लेन-देन विफल हो जाता है, तो आपको इसे मैन्युअल रूप से पुनः प्रयास करने की आवश्यकता हो सकती है।
संस्करण योजना
एक सामान्य तरीका यह है कि आप अपनी तालिका में एक संस्करण कॉलम पेश करें। आपके प्रश्न कुछ ऐसा करेंगे:
select tries,version from table where condition=value;
.. do application logic, and remember the old version value.
update table set tries=newvalue,version=version + 1 where condition=value and version=oldversion;
यदि वह अपडेट विफल हो जाता है / प्रभावित 0 पंक्तियाँ लौटाता है, तो किसी और ने इस बीच तालिका को अपडेट कर दिया है। आपको पूरी तरह से शुरू करना होगा - यानी, नए मानों का चयन करें, एप्लिकेशन लॉजिक करें और फिर से अपडेट का प्रयास करें।