@Phil के लिए SCOPE_IDENTITY बदल देता है: आप अपनी तालिका दो (2) कॉलम, autoincrementing पी स्तंभ और एक AdminName स्तंभ है इसका मतलब यह नहीं है? यदि इसमें केवल एक कॉलम है जहां AdminName जाता है, तो AdminName पीके है और आप निश्चित रूप से एक स्ट्रिंग को स्वत: संयोजित नहीं कर सकते हैं। क्या व्यवसाय नियम आपको पूरी तरह से योग्य विंडोज उपयोगकर्ता नाम प्राथमिक कुंजी बनाने की उम्मीद करते हैं? यह व्यवहार्य होगा और समझ में आएगा, क्योंकि तब आपको AdminName कॉलम पर वैकल्पिक अद्वितीय अनुक्रमणिका की आवश्यकता नहीं होगी।
लेकिन अगर आपके तालिका में दो कॉलम, एक नहीं है: SQLServer में
autoincrement तालिका/स्तंभ परिभाषा का हिस्सा है। आप कॉलम को एक पूर्णांक के रूप में परिभाषित करते हैं और फिर इसे पहचान कॉलम भी बनाते हैं, जो वृद्धि को निर्दिष्ट करते हैं, आमतौर पर 1, लेकिन यह 2 या 5 या 10 या जो भी हो सकता है। एक पंक्ति सम्मिलित करने के लिए, तो आप बस अन्य स्तंभ सम्मिलित (रों) मूल्य (रों) और पी के स्तंभ के साथ कुछ भी नहीं:
insert into T
(foo) -- column(s) list
values('bar') -- values list
आपका संग्रहीत proc करता है कि डालने SCOPE_IDENTITY एक वापसी मान कर सकते हैं या SCOPE_IDENTITY हो सकता है क्लाइंट को आउट आउट पैरामीटर के रूप में वापस भेज दिया गया।
पीएसSCOPE_IDENTITY() वर्तमान दायरे में सबसे हाल ही में जेनरेट की गई पहचान की गई पहचान मान देता है; यह अगली पहचान मान उत्पन्न नहीं करता है।
संपादित करें:
मुमकिन है, अपने व्यवस्थापकों तालिका प्रशासकों के एक सेट होता है। लेकिन अगर इसमें पूर्णांक प्राथमिक कुंजी कॉलम के अलावा कोई भी कॉलम नहीं है, तो प्रशासकों की पहचान करने का कोई तरीका नहीं है; केवल एक चीज जो आप कर सकते हैं उन्हें एक-दूसरे से अलग करना है। यह आपको बहुत दूर नहीं लेता है। लेकिन आपके व्यवस्थापक तालिका में निम्नलिखित किसी एक संरचना था:
ID INTEGER PRIMARY KEY AUTOINCREMENT
windowsusername varchar(50) (unique index)
या
windowsusername varchar(50) primary key
आप अन्य तालिकाओं से व्यवस्थापक की तालिका को देख करने में सक्षम होगा, और विदेशी कुंजी सार्थक होगा। और यह वही है जो एक एकल पूर्णांक स्तंभ वाली एक तालिका का अर्थ है - अर्थात्।
दो स्तंभों के बाद, आप तो एक संग्रहीत प्रक्रिया हो सकता था ऐसा करते हैं:
insert into Administrators
(windowsusername)
values('mydomain\someusername');
return SCOPE_IDENTITY();
और आपके ग्राहक-कार्यक्रम वापस एक वापसी मान autoincremented आईडी कि ऑटोजनरेटेड किया गया था और करने के लिए नव डाला सौंपा के रूप में मिलेगा पंक्ति। यह दृष्टिकोण सामान्य अभ्यास है, और मैं कहूंगा कि इसे "सर्वोत्तम अभ्यास" माना जाता है।
पीएस आप उल्लेख करते हैं कि अगर आपको "सम्मिलित करने के लिए कुछ भी नहीं था" तो आपको "मूल्य डालने" के बारे में नहीं पता था। वहाँ एक विरोधाभास है। यदि आपके पास डालने के लिए कुछ भी नहीं है, तो क्यों डालें? यदि आप ग्राहक के बारे में बिल्कुल कुछ नहीं जानते हैं तो आप एक नया ग्राहक रिकॉर्ड क्यों बनायेंगे? उनका नाम नहीं, उनका शहर, उनका फोन नंबर, कुछ भी नहीं?
स्पष्टीकरण के लिए: आपका प्रश्न "एक आईडी सर्वर कॉलम में पंक्तियों को एक एकल पहचान कॉलम के साथ कैसे डालें" है? – gbn
हां, आप सही हैं, – Phil
स्पष्टीकरण के लिए धन्यवाद यहां लैंडिंग लोगों के लिए, यह पहले पूछा गया है और सही उत्तर यहां है: http: // stackoverflow।कॉम/प्रश्न/850327/कैसे-टू-डालने-इन-ए-टेबल-बस-एक-पहचान-कॉलम – BJury