151

我正在尝试以编程方式将标识列添加到表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 重命名的事情。

更新:我认为第一条语句“关键字'COLUMN'附近的语法不正确”令人窒息。

4

4 回答 4

206

只需COLUMNADD 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]
于 2009-04-27T17:02:01.203 回答
16

这就是向表中添加新列的方式

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
于 2017-04-10T11:15:27.023 回答
8

将列添加到表中的正确语法是:

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

COLUMNSQL SERVER 中的关键字仅用于更改:

ALTER TABLE table_name
  ALTER COLUMN column_name column_type;
于 2016-01-27T08:58:09.950 回答
0

如果您尝试在表的开头添加一列(因为这比更改顺序更容易),它可能正在重命名临时表。此外,如果Employees表中有数据,它必须执行insert select *才能计算EmployeeID。

于 2009-04-27T17:03:53.023 回答