ऑल्टर टेबल कॉलम कॉलम सिंटैक्स जोड़ें


142

मैं प्रोग्राम टेबल पर एक पहचान स्तंभ जोड़ने का प्रयास कर रहा हूँ। मुझे यकीन नहीं है कि मैं अपने सिंटैक्स के साथ क्या गलत कर रहा हूं।

ALTER TABLE Employees
  ADD COLUMN EmployeeID int NOT NULL IDENTITY (1, 1)

ALTER TABLE Employees ADD CONSTRAINT
    PK_Employees PRIMARY KEY CLUSTERED 
    (
      EmployeeID
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

मैं क्या गलत कर रहा हूं? मैंने स्क्रिप्ट को निर्यात करने की कोशिश की, लेकिन SQL Mgmt Studio एक पूरी Temp टेबल का नाम बदलने का काम करता है।

अद्यतन : मुझे लगता है कि यह "COLUMN 'कीवर्ड के पास" गलत सिंटैक्स "के साथ पहले कथन पर घुट रहा है।

जवाबों:


195

बस निकालने COLUMNसेADD COLUMN

ALTER TABLE Employees
  ADD EmployeeID numeric NOT NULL IDENTITY (1, 1)

ALTER TABLE Employees ADD CONSTRAINT
        PK_Employees PRIMARY KEY CLUSTERED 
        (
          EmployeeID
        ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
        ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

9
स्पष्ट करने के लिए, MySQL में 'COLUMN' कीवर्ड केवल मान्य (लेकिन आवश्यक नहीं) है।
एथनबस्टाद

4
@ethanbustad यह DB2 और Postgres के लिए भी मान्य है।

3
हास्यास्पद है कि वे केवल columnकीवर्ड को अनदेखा नहीं करते हैं और इसे हर दूसरे DB की तरह काम करते हैं।
ब्रूस पीयरसन

FYI करें, Oracle इस मामले में SQL सर्वर के समान व्यवहार करता है - दोनों कथन COLUMNमें अनुमति नहीं देते हैं ADD
bsplosion

11

यह तालिका में नया कॉलम जोड़ना है

ALTER TABLE [tableName]
ADD ColumnName Datatype

उदाहरण के लिए

ALTER TABLE [Emp]
ADD Sr_No Int

और अगर आप इसे ऑटो इंक्रीमेंट करना चाहते हैं

ALTER TABLE [Emp]
ADD Sr_No Int IDENTITY(1,1) NOT NULL

1
हम्म हम्म, वा सिगा वाह
एरीनायोस

5

तालिका में कॉलम जोड़ने का सही सिंटैक्स है:

ALTER TABLE table_name
  ADD column_name column-definition;

आपके मामले में यह होगा:

ALTER TABLE Employees
  ADD EmployeeID int NOT NULL IDENTITY (1, 1)

कई कॉलम जोड़ने के लिए कोष्ठक का उपयोग करें:

ALTER TABLE table_name
  ADD (column_1 column-definition,
       column_2 column-definition,
       ...
       column_n column_definition);

COLUMN SQL SERVER में कीवर्ड का उपयोग केवल परिवर्तन के लिए किया जाता है:

ALTER TABLE table_name
  ALTER COLUMN column_name column_type;

0

यदि आप तालिका की शुरुआत में एक स्तंभ जोड़ने की कोशिश कर रहे हैं (जैसा कि यह क्रम बदलने से आसान है) तो यह टेम्परिंग टेबल का नाम बदल सकता है। इसके अलावा, यदि कर्मचारी तालिका में डेटा है, तो उसे चयन * करना होगा ताकि वह कर्मचारी की गणना कर सके।


1
"आसान है जो क्रम को बदल रहा है" - क्या आपका मतलब है कि यह संभव है (हालांकि यह अधिक कठिन है) तालिका को फिर से बनाए बिना स्तंभों के क्रम को बदलना (एक अस्थायी तालिका के माध्यम से)?
9rrr Jämte

1
एक संबंधपरक डेटाबेस में, आपको कभी भी स्तंभों की क्रमबद्धता की आवश्यकता नहीं होनी चाहिए, इसलिए यदि आप बड़े करीने से स्तंभों को क्रमबद्ध करने की कोशिश कर रहे हैं, तो सवाल यह है कि क्यों? यदि कॉलम ऑर्डिनैलिटी इतना महत्वपूर्ण था, तो कॉलम की ऑर्डिनैलिटी को स्वैप या ठीक करने के लिए एक तुच्छ कार्य क्यों नहीं है? इसका कारण यह है कि यह अध्यादेश के लिए मायने नहीं रखता है।
शिव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.