2009-04-27 20 views
108

Programatik olarak çalışanlara bir tablo için bir kimlik sütunu eklemeye çalışıyorum. Benim sözdizimimle yanlış yaptığımdan emin değilim.Alter Tablosu Ekle Sütun Sözdizimi

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] 

Neyi yanlış yapıyorum? Komut dosyasını dışa aktarmayı denedim, ancak SQL Mgmt Studio bir Temp Table ismini yeniden adlandırır.

GÜNCELLEME: Ben ilk ekstresinde boğulma olduğunu düşünüyorum "anahtar kelime 'SÜTUN' yakınında yanlış sözdizimi."

cevap

160

Sadece Size (bu siparişi değiştirerek daha kolay olduğu gibi) Tablonun başına bir sütun eklemek çalışıyorsanız yeniden adlandırma geçici tablo yapıyor olabilir 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] 
+5

netleştirmek için artırılır olmak için, 'COLUMN' anahtar kelimesi sadece geçerlidir (ancak n MySQL'de gerekli. – ethanbustad

+1

@ethanbustad DB2 ve Postgres için de geçerlidir. –

0

den COLUMN çıkarın. Ayrıca, Çalışanlar tablosunda veri varsa, select * değerini girmek zorundadır, böylece ÇalışanNo değerini hesaplayabilir.

+1

"siparişi değiştiren daha kolay" - Tablonun sırasını değiştirmeden (temp masası aracılığıyla) sütunların sırasını değiştirmek mümkün olsa da (daha zor olsa da)? –

+1

İlişkisel bir veritabanında, sütunların sıralılığı için hiçbir zaman bir gereksiniminiz olmamalıdır; bu nedenle, sütunları düzgün bir şekilde sipariş etmeye çalışıyorsanız, bunun nedeni nedir? Sütun sıralaması çok önemliyse, neden sütun sırasını değiştirmek veya düzeltmek için önemsiz bir işlev yok? Nedeni, sıralamanın olaysızlığı için tasarlanmış olmasıdır. – Shiv

2

tabloya sütun ekleyerek için doğru sözdizimi şöyledir: Senin durumunda

ALTER TABLE table_name 
    ADD column_name column-definition; 

öyle olacak:

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

COLUMN:

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

birden sütun parantez kullanmak eklemek için SQL SERVER anahtar sözcüğü yalnızca değiştirilmek üzere kullanılır:

ALTER TABLE table_name 
    ALTER COLUMN column_name column_type; 
5

Bu nasıl Tablo yeni sütunu ekleme olduğu

ALTER TABLE [tableName] 
ADD ColumnName Datatype 

Ör

ALTER TABLE [Emp] 
ADD Sr_No Int 

Ve bunun oto

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