आशावादी लॉकिंग।
निराशावादी लागू करना कठिन है और वेब वातावरण में समस्याएं देगा। लॉक को बंद करने, ब्राउज़र बंद करने के लिए कौन सी कार्रवाई जारी होगी? सत्र को समय पर छोड़ना? इसके बारे में क्या होगा यदि वे अपने परिवर्तनों को बचाते हैं?
आप निर्दिष्ट नहीं करते कि आप किस डेटाबेस का उपयोग कर रहे हैं। एमएस एसक्यूएल सर्वर में टाइमस्टैम्प डेटाटाइप है। हालांकि समय के साथ इसका कोई लेना-देना नहीं है। यह मोटे तौर पर एक संख्या है जो प्रत्येक बार पंक्ति अपडेट होने पर बदल जाएगी। यह सुनिश्चित करने के लिए आपको कुछ भी करने की ज़रूरत नहीं है कि यह बदल जाए, आपको बस इसे जांचना होगा। आप अंतिम बार संशोधित दिनांक/समय का उपयोग करके समान रूप से प्राप्त कर सकते हैं क्योंकि @ केएम सुझाव देता है। लेकिन इसका मतलब है कि जब भी आप पंक्ति को अपडेट करते हैं तो आपको इसे बदलना याद रखना होगा। यदि आप डेटाटाइम का उपयोग करते हैं तो आपको यह सुनिश्चित करने के लिए पर्याप्त सटीकता के साथ डेटा प्रकार का उपयोग करने की आवश्यकता है कि आप उस मान के साथ समाप्त नहीं कर सकते जब इसे करना चाहिए। उदाहरण के लिए, कोई एक पंक्ति बचाता है, तो कोई इसे पढ़ता है, फिर दूसरा सहेजता है लेकिन संशोधित दिनांक/समय अपरिवर्तित छोड़ देता है। मैं टाइमस्टैम्प का उपयोग तब तक करूंगा जब तक रिकॉर्ड पर अंतिम संशोधित तारीख को ट्रैक करने की आवश्यकता न हो।
इसे जांचने के लिए आप @KM सुझाव दे सकते हैं और इसे अद्यतन कथन में शामिल कर सकते हैं जहां खंड। या आप एक लेनदेन शुरू कर सकते हैं, टाइमस्टैम्प की जांच करें, अगर सभी अद्यतन ठीक से करते हैं, तो लेनदेन प्रतिबद्ध करें, अगर नहीं तो विफलता कोड या त्रुटि लौटाएं।
होल्डिंग लेनदेन खुला (जैसा कि @le dorfier द्वारा सुझाया गया है) निराशावादी लॉकिंग के समान है, लेकिन लॉक डेटा की मात्रा एक पंक्ति से अधिक हो सकती है। डिफ़ॉल्ट रूप से पेज स्तर पर अधिकांश आरडीबीएम लॉक।आप निराशावादी लॉकिंग के साथ ही एक ही मुद्दे में भाग लेंगे।
आप अपने प्रश्न में उल्लेख करते हैं कि आप विवादित अपडेट के बारे में चिंतित हैं। लॉकिंग निश्चित रूप से रोक देगा। आशावादी या निराशावादी दोनों, ठीक से कार्यान्वित होने पर ठीक उसी तरह से रोकें।
मुझे टाइमस्टैम्प डेटा प्रकार से बेहतर अंतिम तिथि दिनांक पसंद है, क्योंकि इसमें उपयोगी डेटा है। हमारे पास व्यक्ति को ट्रैक करने के लिए एक LastChgID भी है, दोनों कॉलम प्रदर्शित करने के लिए अच्छे हैं, जहां टाइमस्टैम्प डेटा प्रकार कॉलम प्रदर्शित करने के लिए व्यर्थ है। –
यदि इस प्रकार का डेटा पहले से ही एक आवश्यकता है तो इसका उपयोग करने का कोई कारण नहीं है। मैंने तदनुसार अपना जवाब अपडेट किया है। – pipTheGeek