"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > बिना ऑर्डर के SQL सर्वर 2005 में एक गैर-पहचान कॉलम को स्वचालित रूप से कैसे बढ़ाएं?

बिना ऑर्डर के SQL सर्वर 2005 में एक गैर-पहचान कॉलम को स्वचालित रूप से कैसे बढ़ाएं?

2024-12-23 को प्रकाशित
ब्राउज़ करें:537

How to Auto-Increment a Non-Identity Column in SQL Server 2005 Without ORDER BY?

SQL सर्वर 2005 में बिना ऑर्डर के ऑटो-इंक्रीमेंट आईडी जेनरेट करना

ऑटो-इंक्रीमेंट करते समय एक टेबल से दूसरे टेबल में डेटा डालने की आवश्यकता गैर-पहचान वाला कॉलम एक चुनौती हो सकता है। मानक दृष्टिकोण में कर्सर का उपयोग करना या तालिका चर बनाना शामिल है, लेकिन ये अक्षम हो सकते हैं।

किसी वैध ORDER BY फ़ील्ड के अभाव में, ROW_NUMBER फ़ंक्शन को नियोजित किया जा सकता है। हालाँकि, स्पष्ट ऑर्डर की अनुपस्थिति मूल डेटा ऑर्डर के संरक्षण की गारंटी नहीं देती है। ऐसा इसलिए है क्योंकि "ऑर्डर नहीं किया गया" "मूल ऑर्डर को बनाए रखने" से अलग है। ) चुनना Row_Number() खत्म (क्रमानुसार (1 चुनें)) एकजुट होना( (dbo.TargetTable से (TABLOCKX, HOLDLOCK) के साथ अधिकतम (आईडी) चुनें), 0 ), फ़ील्डवैल्यू Dbo.SourceTable से जहां {somecondition};

यह दृष्टिकोण अधिकतम आईडी की गणना करता है और समवर्ती त्रुटियों से बचने के लिए लॉक प्राप्त करते समय डेटा सम्मिलित करता है।

INSERT dbo.TargetTable (ID, FIELD)
SELECT
   Row_Number() OVER (ORDER BY (SELECT 1))
        Coalesce(
         (SELECT Max(ID) FROM dbo.TargetTable WITH (TABLOCKX, HOLDLOCK)),
         0
      ),
   FieldValue
FROM dbo.SourceTable
WHERE {somecondition};
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3