2009-04-27 54 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