select max(id) + 1
का चयन करें के साथ दृष्टिकोण, एक साथ सम्मिलित करने वाले दो सत्र तालिका से समान वर्तमान अधिकतम आईडी देखेंगे, और दोनों एक ही नया आईडी मान सम्मिलित करेंगे। इसे सुरक्षित रूप से उपयोग करने का एकमात्र तरीका लेनदेन शुरू करने से पहले तालिका को लॉक करना है, जो दर्दनाक है और लेनदेन को क्रमबद्ध करता है। (और जैसा कि स्टिजन बताते हैं, यदि उच्चतम रिकॉर्ड हटा दिया जाता है तो मूल्यों का पुन:उपयोग किया जा सकता है)। मूल रूप से, इस दृष्टिकोण का कभी भी उपयोग न करें। (ऐसा करने के लिए कभी-कभी एक सम्मोहक कारण हो सकता है, लेकिन मुझे यकीन नहीं है कि मैंने कभी एक देखा है)।
अनुक्रम गारंटी देता है कि दो सत्रों को अलग-अलग मान मिलेंगे, और किसी क्रमांकन की आवश्यकता नहीं है। यह बेहतर प्रदर्शन करेगा और सुरक्षित, कोड करने में आसान और बनाए रखने में आसान होगा।
अनुक्रम का उपयोग करके डुप्लिकेट त्रुटियां प्राप्त करने का एकमात्र तरीका यह है कि यदि अनुक्रम मान के ऊपर आईडी के साथ तालिका में रिकॉर्ड पहले से मौजूद हैं, या यदि कुछ अभी भी अनुक्रम का उपयोग किए बिना रिकॉर्ड सम्मिलित कर रहा है। इसलिए यदि आपके पास मैन्युअल रूप से दर्ज आईडी के साथ एक मौजूदा तालिका थी, तो 1 से 10 कहें, और आपने 1 के डिफ़ॉल्ट स्टार्ट-वैल्यू के साथ एक अनुक्रम बनाया है, अनुक्रम का उपयोग करने वाला पहला सम्मिलन 1 की आईडी डालने का प्रयास करेगा - जो पहले से मौजूद है . कोशिश करने के बाद कि 10 बार सीक्वेंस आपको 11 देगा, जो काम करेगा। यदि आपने अगली प्रविष्टि करने के लिए अधिकतम-आईडी दृष्टिकोण का उपयोग किया है जो 12 का उपयोग करेगा, लेकिन अनुक्रम अभी भी 11 पर होगा और आपको अगली बार nextval
पर कॉल करने पर 12 भी देगा। ।
अनुक्रम और तालिका संबंधित नहीं हैं। यदि तालिका में मैन्युअल रूप से जेनरेट किया गया आईडी मान डाला जाता है तो अनुक्रम स्वचालित रूप से अपडेट नहीं होता है, इसलिए दो दृष्टिकोण मिश्रित नहीं होते हैं। (अन्य बातों के अलावा, एक ही क्रम का उपयोग कई तालिकाओं के लिए आईडी बनाने के लिए किया जा सकता है, जैसा कि डॉक्स में बताया गया है)।
यदि आप मैन्युअल दृष्टिकोण से अनुक्रम दृष्टिकोण में बदल रहे हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि अनुक्रम एक प्रारंभ-मूल्य के साथ बनाया गया है जो तालिका में सभी मौजूदा आईडी से अधिक है, और जो कुछ भी सम्मिलित करता है वह अनुक्रम का उपयोग करता है केवल भविष्य में।