2009-04-02 9 views
7

मुझे ऑर्डर निर्धारित करने में सक्षम होना चाहिए कि पंक्ति में पंक्तियां डाली गई हैं (कोई अपडेट नहीं है)। क्या मैं ऐसा करने के लिए पहचान कॉलम का उपयोग कर सकता हूं? मुझे पता है कि अंतराल हो सकते हैं, लेकिन क्या मूल्य सम्मिलन आदेश द्वारा बढ़ने की गारंटी है?क्या मैं पंक्तियों के सम्मिलित क्रम को निर्धारित करने के लिए SQL सर्वर पहचान कॉलम का उपयोग कर सकता हूं?

उत्तर

7

पुन: उपयोग नहीं किया जाएगा मोटे तौर पर हाँ, जब तक आप कभी भी इसे रीसेट के रूप में नहीं है या थोक प्रति के साथ पंक्तियां सम्मिलित, या IDENTITY_INSERT का उपयोग करें। और निश्चित रूप से यह मानते हुए कि आप डेटा-प्रकार को ओवरफ़्लो नहीं करते हैं (जो प्रभावशाली हो सकता है)।

2

हां। विलोपन की वजह से किसी भी अंतराल

2

के रूप में मार्क ने चर्चा की, हाँ आप प्रावधानों

आप फिर भी क्या करना चाहिए निश्चित समस्या को ठीक करने के साथ कर सकते हैं एक स्तंभ

 
dteInserted datetime not null default getdate() 

तो फिर तुम सिर्फ इस द्वारा आदेश दिया गया चुनें जोड़ है।

स्वयं मैं अपने द्वारा डिजाइन किए जा रहे किसी भी डेटाबेस में किसी भी 'डेटा' तालिका पर स्वचालित रूप से ऐसा कॉलम जोड़ता हूं। भंडारण आजकल सस्ता है और किसी पंक्ति पर सम्मिलन दिनांक को टाइमस्टैम्पिंग हमेशा किसी बिंदु पर उपयोगी है।

+1

यहां समस्या यह है कि यदि आप पंक्तियों को पर्याप्त तेज़ी से सम्मिलित करते हैं (जो हम आयात में करते हैं), तो आपको डुप्लिकेट डेटाटाइम मिलते हैं क्योंकि डेटाटाइम की ग्रैन्युलरिटी SQL सर्वर पर पर्याप्त नहीं है। – Jon

+1

हम्म, अच्छा बिंदु, मैं इस विचार पर ध्यान केंद्रित कर रहा हूं कि आप सामान्य लेनदेन डेटाबेस संचालन के माध्यम से डालेंगे। ठीक है, उस मामले में उत्तर यह है कि पहचान क्रम में है, लेकिन आपको अभी भी टाइमस्टैंप शामिल करना चाहिए क्योंकि इससे आपको किसी भी समस्या का पता लगाना पड़ेगा .... – Cruachan

+1

... जैसे पहचान पत्र या रीसेट या जो कुछ भी होगा धारणा को अमान्य करें। – Cruachan

संबंधित मुद्दे

 संबंधित मुद्दे