2014-11-06 9 views
6

निम्नलिखित INSERT कथन क्यों कोई त्रुटि नहीं देता है?एसक्यूएल सर्वर: स्टेटमेंट वाक्यविन्यास डालें

CREATE TABLE Table1(id INT,name VARCHAR(10)) 

INSERT INTO Table1(xx.id,yyyy.name) Values (1,'A') 

क्यों उपरोक्त कथन xx. और yyyy. उपेक्षा करता है? इसका तात्पर्य क्या है ?

+1

एक्सएक्स क्या हैं। और yyy। प्रतिनिधित्व करना चाहिए? INSERT INTO (आईडी, नाम) मूल्य (1, 'ए') – mxix

+1

ओपी बताते समय, यह कोई त्रुटि उत्पन्न नहीं करता है: http://www.sqlfiddle.com/#!6/057c5। –

उत्तर

-1

जहां तक ​​मुझे पता है, आप जिस वाक्यविन्यास का उपयोग कर रहे हैं उसका मतलब है आमतौर पर table.column तो दूसरे शब्दों में आप तालिका 1 में डालने की कोशिश कर रहे हैं लेकिन अन्य तालिकाओं से कॉलम घोषित कर रहे हैं।

आप इस

CREATE TABLE Table1(id INT,name VARCHAR(10)) 

INSERT INTO Table1(id,name) Values (1,'A') 
+4

मुझे लगता है कि प्रश्न यह नहीं है कि यह * होना चाहिए, लेकिन गलत वाक्यविन्यास के बावजूद सवाल का बयान क्यों काम करता है। –

0

इस तरह कुछ करना चाहिए कुछ ...

उदाहरण के लिए के नाम स्थान का अर्थ है:

SELECT object.id, object.name FROM table object WHERE object.name = 'Foo'; 

             /\ 
              | | 
          object is the name space for the table. 

और एक नाम स्थान नहीं बनाया है, तो आप है क्वेरी विफल रहता है।

0

एकमात्र चीज जो मैं सोच सकता हूं वह यह है कि डेटाबेस इंजन नाम स्थान को अनदेखा कर रहा है क्योंकि क्वेरी के दायरे में इंसर्ट इंंटो से निपटने के दौरान तालिका के दायरे तक ही सीमित है। जब अद्यतन कहने की बात आती है जहां कई टेबल दायरे का हिस्सा हो सकते हैं, तो नीचे असफल हो जाएंगे। पता नहीं क्यों ऐसा होता है लेकिन अगर मुझे लगता है, तो आखिरी अवधि के बाईं ओर शायद सभी मूल्य '।'

नजरअंदाज कर दिया है कि आप नीचे क्वेरी

CREATE TABLE Table1(id INT,name VARCHAR(10)) 

INSERT INTO Table1(Table2.dbo.id,...................name) Values (1,'A') 

के लिये कार्य योजना का विश्लेषण के रूप में

INSERT INTO [Table1]([id],[name]) Values(@1,@2) 
1

मैं भी नीचे दिए गए क्वेरी जाँच की।

INSERT INTO Table11(xx.xx.xx.xx.xx.xx.xx.id,yy.yy.yy.yy.yy.yy.yy.yy.name) 
Values (1,'A') 

यह भी काम किया गया। आम तौर पर हम जुड़ने के लिए उपनाम का उपयोग करते हैं। जैसा कि मुझे पता है, सम्मिलित करने के लिए तालिका नाम के पास उपनाम का उपयोग एसक्यूएल में प्रतिबंधित है। कॉलम नाम के मामले में, क्वेरी केवल अंतिम डॉट (।) के बगल में स्थित स्ट्रिंग का उपयोग करती है।

मैं इसे निष्कर्ष निकाला हूं, सम्मिलित क्वेरी डॉट (।) द्वारा अलग किए गए कॉलम नाम से पहले की गई स्ट्रिंग के बारे में परवाह नहीं करती है।

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