2009-04-27 59 views
108

我試圖以編程方式將一個標識列添加到表Employees。不知道我在做什麼錯我的語法。改變表格添加列語法

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 Table重命名的事情。

UPDATE: 我認爲這是第一個語句窒息與「關鍵字'COLUMN'附近的語法不正確。

回答

160

剛剛從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

爲了澄清,該'COLUMN'關鍵字只是有效的(但是n不需要)在MySQL中。 – ethanbustad 2015-02-12 21:28:26

+1

@ethanbustad它也適用於DB2和Postgres。 – 2016-09-02 14:39:38

0

刪除COLUMN它可以做臨時表重命名,如果你想將列添加到表的起點(因爲這是比改變秩序更容易)。另外,如果Employees表中有數據,則必須執行insert select *以便計算EmployeeID。

2

添加列到表中正確的語法是:

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; 
5

這是如何添加新列表

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