Tabloyu Değiştir Sütun Sözdizimi Ekle


142

Programlı bir tablo çalışanlara bir kimlik sütunu eklemek çalışıyorum. Söz dizimimle neyi yanlış yaptığımdan emin değilim.

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 aktarmaya çalıştım, ancak SQL Mgmt Studio tüm Temp Tablosu adını değiştirir.

GÜNCELLEME : Bence "COLUMN" anahtar kelimesinin yanında yanlış sözdizimi ile ilk ifade boğuluyor.

Yanıtlar:


195

Hemen kaldır COLUMNdanADD 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
Açıklığa kavuşturmak için, 'COLUMN' anahtar kelimesi MySQL'de yalnızca geçerlidir (ancak zorunlu değildir).
etanbustad

4
@ethanbustad DB2 ve Postgres için de geçerlidir.
ᴠɪɴᴄᴇɴᴛ

3
Sadece columnanahtar kelimeyi görmezden gelmek ve orada diğer tüm DB gibi çalışmasını yapmak çok saçma .
Bruce Pierson

FYI, Oracle bu durumda SQL Server ile aynı şekilde davranır - her ikisi COLUMNde ADDifadeye izin vermez .
bsplosion

11

Tabloya yeni sütun ekleme yöntemi

ALTER TABLE [tableName]
ADD ColumnName Datatype

Örneğin

ALTER TABLE [Emp]
ADD Sr_No Int

Ve otomatik olarak artırılmasını istiyorsanız

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

1
hmm hmm, wa
siga

5

Tabloya sütun eklemek için doğru sözdizimi şöyledir:

ALTER TABLE table_name
  ADD column_name column-definition;

Sizin durumunuzda:

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

Birden çok sütun eklemek için köşeli ayraç kullanın:

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

COLUMN SQL SERVER içindeki anahtar kelime yalnızca değiştirmek için kullanılır:

ALTER TABLE table_name
  ALTER COLUMN column_name column_type;

0

Tablonun başına bir sütun eklemeye çalışıyorsanız geçici tablo yeniden adlandırma yapıyor olabilir (çünkü bu, siparişi değiştirmekten daha kolaydır). Ayrıca, Çalışanlar tablosunda veri varsa, Çalışan Kimliği'ni hesaplayabilmesi için insert select * yapması gerekir.


1
"düzeni değiştirmeyi kolaylaştırır" - Tabloyu yeniden oluşturmadan (geçici tablo aracılığıyla) sütunların sırasını değiştirmenin (daha zor olsa da) mümkün olduğu anlamına mı geliyor?
Örjan Jämte

1
İlişkisel bir veritabanında, sütunların sıralılığına asla ihtiyacınız olmamalıdır, bu nedenle sütunları düzgün bir şekilde sipariş etmeye çalışıyorsanız, soru neden? Sütun sıralaması bu kadar önemliyse, sütunların sıralanmasını değiştirmek veya düzeltmek için neden önemsiz bir işlev yoktur? Nedeni, ordinalitenin önemli olmaması için tasarlanmasıdır.
Shiv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.