2010-08-10 13 views
6

मैं मेज नामित कंपनी को बदलने के लिए कोशिश कर रहा हूँ में स्तंभ वाक्य रचना जोड़ने के लिए, लेकिन यह त्रुटि प्रदर्शित करेगाऑल्टर तालिका एसक्यूएल

syntax error at or near "(" 
LINE 2: ADD(company_access_level short NOT NULL, 

मेरे वाक्य रचना

ALTER TABLE company 
ADD company_access_level short NOT NULL, 
workgroup_level short NOT NULL, 
Company Logon URL character varying NOT NULL, 
Company Logoff URL character varying NOT NULL 

धन्यवाद

+2

त्रुटि संदेश में इसमें एक कोष्ठक है और आपके द्वारा पोस्ट किया गया वाक्यविन्यास नहीं है। क्या आप वाकई दो सिंक में हैं? और आप किस आरडीबीएमएस का उपयोग कर रहे हैं? मुझे पूरा यकीन है कि आपको पोस्टग्रेस्क्ल का उपयोग कर रिक्त स्थान वाले कॉलम नामों को सीमित करना होगा (शायद उद्धरण में) –

+0

Im – lakshmi

उत्तर

20

मैंने पोस्टस्ट्रक्ल में इस निश्चित वाक्यविन्यास की कोशिश की और यह काम किया। कोई short डेटाटाइप नहीं है, हालांकि आपको कुछ और उपयोग करना होगा (शायद smallint?) यदि आपकी तालिका में डेटा है तो यह स्क्रिप्ट जॉन के उत्तर के कारणों से विफल हो जाएगी।

ALTER TABLE company 
ADD company_access_level int NOT NULL, 
ADD workgroup_level int NOT NULL, 
ADD "Company Logon URL" character varying NOT NULL, 
ADD "Company Logoff URL" character varying NOT NULL 
3

भी है , यदि आपकी तालिका में डेटा है तो आप नल कॉलम नहीं जोड़ सकते हैं (और कुछ आरडीबीएमएस के लिए आप तालिका में कोई डेटा मौजूद नहीं होने पर भी नल कॉलम नहीं जोड़ सकते हैं)।

या तो एक डिफ़ॉल्ट मान प्रदान करें या कॉलम को पूर्ण करने की अनुमति दें। आप डेटा के साथ नए कॉलम हमेशा पॉप्युलेट कर सकते हैं और कॉलम को बाद में न्यूल करने के लिए संशोधित कर सकते हैं।

0

ऐसे पुराने प्रश्न को खोलने के लिए खेद है, लेकिन उत्तर में से एक में सलाह है कि आप मुझे बहुत अधिक परेशानी नहीं दे सकते हैं। आप कर सकते हैं डेटा के साथ तालिका में एक न्यूल कॉलम जोड़ें, केवल प्रतिबंध यह है कि आपको एक डिफ़ॉल्ट मान भी प्रदान करना होगा। Sybase, Postgres और MySQL के साथ परीक्षण किया। तो ऊपर दिया गया उदाहरण बन जाता है:

ALTER TABLE company 
ADD company_access_level int default 'not set' NOT NULL , 
ADD workgroup_level int default 0 NOT NULL, 
ADD "Company Logon URL" character varying default 'not set' NOT NULL, 
ADD "Company Logoff URL" character varying default 'not set' NOT NULL 
0

कोई भी जो यहां एक ही प्रश्न के साथ आया था, मुझे यकीन नहीं है कि इन उत्तरों को क्या करना है। मैंने उन सभी की कोशिश की, और हमेशा एक वाक्य या किसी अन्य के पास 'वाक्य' त्रुटि सिंटैक्स त्रुटि मिली। आधिकारिक docs पर वापस जाने के बाद, मुझे एहसास हुआ कि क्या लापता था अतिरिक्त एसईटी या प्रकार जैसे अतिरिक्त कीवर्ड था। उदाहरण:

सबसे पहले इस

zuri=# ALTER TABLE newarts ALTER COLUMN sunsetdate DATE NULL; ERROR: syntax error at or near "DATE" LINE 2: ALTER COLUMN sunsetdate DATE NULL;

फिर इस:

zuri=# ALTER TABLE newarts ALTER COLUMN sunsetdate TYPE DATE NULL; ERROR: syntax error at or near "NULL" LINE 2: ALTER COLUMN sunsetdate TYPE DATE NULL;

हाँ, वहाँ अब भी है कि कोई त्रुटि लेकिन एक बार मैं कीवर्ड प्रकार के साथ तिथि के अर्थ निर्दिष्ट त्रुटि हल हो गई थी और मैं दूसरे पर चले गए। मुझे एसईटी के अतिरिक्त के साथ एक ही अनुभव था (आधिकारिक दस्तावेज़ों के उसी पृष्ठ पर उदाहरण देखें जो मैंने पहले ही उद्धृत किया है)।

नहीं NULL की विशिष्ट समस्या के रूप में, (विशेष रूप से के रूप में यह तिथियों की मेरी मुद्दे से संबंधित है) मैं इस answer पढ़ सकते हैं और यह काम करने के लिए लग रहा था -

zuri=# update lili_code set sunsetdate=NULL; UPDATE 0 

- मैं एक त्रुटि संदेश नहीं मिला लेकिन फिर मैंने पढ़ा

सफल समापन पर, एक अद्यतन आदेश प्रपत्र

UPDATE count 
के एक आदेश टैग रिटर्न

गणना पंक्तियों की संख्या अद्यतन है। यदि गिनती 0 है, तो कोई पंक्ति नहीं है (यह एक त्रुटि नहीं माना जाता है)।

जो आधिकारिक दस्तावेज़ों में भी है, here

अंततः, मैं PGAdminIII में बदल गया, जहां मैंने पाया कि न्यूल एक सरल चेक बॉक्स नहीं है। इसे अनचेक करें, समस्या हल हो गई है। मुझे यकीन है कि इस काम को psql के साथ कमांड लाइन पर बनाने का एक तरीका है, मुझे बस यह नहीं मिला है।

मुझे लगता है कि कुछ बदलाव भी अल्टर और अपडेट के बीच अंतर (इस SO answer और मेरी गाली टिप्पणी देखें) के साथ-साथ नई संरचनाओं (जैसे ओपी के प्रश्न में) के बीच और डेटा को संशोधित करने के बीच भी हो सकता है पहले से ही (मेरे रूप में)। कहानी के नैतिक, आधिकारिक दस्तावेज पढ़ें। इसे स्कैन मत करो। इसे पढ़ें। और यदि आप न्यूल और न्यूल के बारे में अधिक जानना चाहते हैं, तो this पढ़ें।

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