SQL सर्वर त्रुटि 120 तब होती है जब आप अपने INSERT
. में पर्याप्त कॉलम निर्दिष्ट नहीं करते हैं SELECT
. का उपयोग करते समय सूची डालने के लिए मूल्यों की सूची।
अधिक विशिष्ट होने के लिए, ऐसा तब होता है जब आप SELECT
. का उपयोग करते हैं अपने INSERT
. में सूची बनाएं कथन, लेकिन SELECT
सूची उतने कॉलम नहीं लौटाती जितनी आप INSERT
. के साथ निर्दिष्ट कर रहे हैं ।
इसे ठीक करना आसान है। बस सुनिश्चित करें कि आपके INSERT
. के बीच कॉलम की संख्या मेल खाती है और SELECT
सूची।
खराब कोड
यहां कोड का एक उदाहरण दिया गया है जो इस त्रुटि का कारण बनता है।
INSERT INTO OrdersLatest (
OrderId,
OrderDate,
OrderDesc
)
SELECT
OrderId,
OrderDate
FROM OrdersMarch;
परिणाम:
Msg 120, Level 15, State 1, Line 1 The select list for the INSERT statement contains fewer items than the insert list. The number of SELECT values must match the number of INSERT columns.
इस मामले में, मैं अपने INSERT
. में तीन कॉलम निर्दिष्ट करता हूं , लेकिन मैं अपने SELECT
. में केवल दो कॉलम चुनता हूं सूची।
अच्छा कोड
ऊपर दी गई गड़बड़ी को ठीक करने का तरीका यहां बताया गया है।
INSERT INTO OrdersLatest (
OrderId,
OrderDate,
OrderDesc
)
SELECT
OrderId,
OrderDate,
OrderDesc
FROM OrdersMarch;
परिणाम:
(5 rows affected)
मैंने केवल OrderDesc
जोड़ा था SELECT
. के लिए कॉलम सूची।
कम कॉलम निर्दिष्ट करना
पिछला उदाहरण स्पष्ट रूप से मानता है कि मैं अतिरिक्त कॉलम डालना चाहता था। अगर हम नहीं चाहते थे कि कॉलम डाला जाए, तो हमें इसे INSERT
से हटा देना चाहिए था। पूरी तरह से।
इस तरह।
INSERT INTO OrdersLatest (
OrderId,
OrderDate
)
SELECT
OrderId,
OrderDate
FROM OrdersMarch;
हालांकि, यह इस बात पर निर्भर करेगा कि हमारे पास कोई NOT NULL
है या नहीं गंतव्य तालिका पर बाधाएं।
चयन सूची में वाइल्डकार्ड का उपयोग करना
तारक का उपयोग करना भी संभव है (*
) वाइल्डकार्ड SELECT
. में सूची।
INSERT INTO OrdersLatest (
OrderDate,
OrderId,
OrderDesc
)
SELECT *
FROM OrdersMarch;
हालांकि इसे अच्छा अभ्यास नहीं माना जाता है, क्योंकि आप गलती से गलत कॉलम चुन सकते हैं, या वे गलत क्रम में हो सकते हैं, आदि।