更改表添加列语法

Bud*_*Joe 135 sql t-sql sql-server ddl

我正在尝试以编程方式将一个标识列添加到表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]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我尝试导出脚本,但SQL Mgmt Studio会对整个Temp Table进行重命名.

更新:我认为它在第一个语句中窒息"关键字'COLUMN'附近的语法不正确."

Vik*_*ram 191

只是删除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]
Run Code Online (Sandbox Code Playgroud)

  • 为了澄清,'COLUMN'关键字仅在MySQL中有效(但不是必需的). (7认同)
  • @ethanbustad它对DB2和Postgres也有效. (4认同)
  • 荒谬的是,他们不仅忽略了`column`关键字,而且让它像其他所有DB一样工作. (3认同)

Chi*_*kar 9

这是向表中添加新列的方法

ALTER TABLE [tableName]
ADD ColumnName Datatype
Run Code Online (Sandbox Code Playgroud)

例如

ALTER TABLE [Emp]
ADD Sr_No Int
Run Code Online (Sandbox Code Playgroud)

如果你想让它自动递增

ALTER TABLE [Emp]
ADD Sr_No Int IDENTITY(1,1) NOT NULL
Run Code Online (Sandbox Code Playgroud)


Dzi*_*mau 5

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

ALTER TABLE table_name
  ADD column_name column-definition;
Run Code Online (Sandbox Code Playgroud)

在你的情况下,它将是:

ALTER TABLE Employees
  ADD EmployeeID int NOT NULL IDENTITY (1, 1)
Run Code Online (Sandbox Code Playgroud)

要添加多个列,请使用括号:

ALTER TABLE table_name
  ADD (column_1 column-definition,
       column_2 column-definition,
       ...
       column_n column_definition);
Run Code Online (Sandbox Code Playgroud)

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

ALTER TABLE table_name
  ALTER COLUMN column_name column_type;
Run Code Online (Sandbox Code Playgroud)