केवल एक पहचान कॉलम के साथ एक तालिका में कैसे डालें?


84

(जवाब देने के लिए कोशिश कर के पाठ्यक्रम में इस सवाल के साथ आया यह एक दूसरे )

निम्नलिखित MS-SQL तालिका पर विचार करें, जिसे GroupTable कहा जाता है:

ग्रुप
-------
1  
2  
3  

जहां GroupID प्राथमिक कुंजी है और एक पहचान स्तंभ है।

IDENTITY_INSERT ON का उपयोग किए बिना आप तालिका में एक नई पंक्ति कैसे डालें (और इसलिए एक नई ID जनरेट करें) ?

ध्यान दें कि यह:

INSERT INTO GroupTable() Values ()   

... काम नहीं करेगा।

संपादित करें: हम यहां SQL 2005 या SQL 2008 की बात कर रहे हैं।

जवाबों:


126

यह काम करना चाहिए:

INSERT INTO GroupTable DEFAULT VALUES 

मैं विजुअल स्टूडियो 2008 / एसक्यूएल एक्सप्रेस 2005 के साथ काम करने के लिए इसे प्राप्त नहीं कर सकता। कोई विचार? समान तालिका लेआउट, एक कॉलम, प्राथमिक कुंजी, पहचान (1,1)।
थॉमस सैंडबर्ग

मैं SQL 2008 R2 का उपयोग कर रहा हूं, मेरे लिए कोई खुशी नहीं!
टोडैवर

SQL Server 2008 एक्सप्रेस पर मेरे लिए काम करता है।
एड्रियन लिंच

3
@RomanPekar, SqlServer 2008 में और बाद में mergeऑपरेटर के साथ संभव है । जैसेmerge into TableName using (values (1), (2), (3)) s(n) on 1=0 when not matched then insert default values;
i-एक


3

एक बार में एक से अधिक पंक्ति सम्मिलित करना संभव है।

उदाहरण के लिए, 30 पंक्तियों को सम्मिलित करने के लिए। INSERT इन्टो ग्रुपटेबल वैल्यूज़ वैल्यू गो ३०

यह प्रत्येक बार पहचान कॉलम को बढ़ाकर 30 पंक्तियाँ सम्मिलित करेगा।


SQL 2008 के बारे में निश्चित नहीं है, लेकिन 2008R2 में यह काम नहीं करता है (मुझे "जीओ" के पास अवैध त्रुटि "अमान्य सिंटैक्स मिलता है)
Elaskanator

0

आप एक अनुक्रम या कुछ इसी तरह का उपयोग करने की कोशिश कर सकते हैं? जहां आप एक अनुक्रम से चयन करते हैं और यह आपको अनुक्रम में अगला मूल्य देगा।


मुझे लगता है कि वह Oracle DB के बारे में बात कर रहा है
कोडुलिके

मुझे पता है कि अनुक्रम ओरेकल में मौजूद हैं और यह निश्चित नहीं है कि क्या (यदि कोई हो) एसक्यूएल सर्वर में तुलनीय चीज मौजूद है। यही कारण है कि मैंने इसे "या कुछ इसी तरह" के साथ प्रत्यय दिया और फिर संदर्भ के लिए अनुक्रम की एक परिभाषा दी।
माइक

3
SQL सर्वर 2012 में SEQUENCE s है।
निक चामास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.