Изменить таблицу Добавить синтаксис столбца - PullRequest
132 голосов
/ 27 апреля 2009

Я пытаюсь программно добавить столбец идентификаторов в таблицу «Сотрудники». Не уверен, что я делаю неправильно с моим синтаксисом.

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 »."

Ответы [ 4 ]

187 голосов
/ 27 апреля 2009

Просто удалите COLUMN из 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]
8 голосов
/ 10 апреля 2017

Вот как Добавление нового столбца в таблицу

ALTER TABLE [tableName]
ADD ColumnName Datatype

* 1005 например *

ALTER TABLE [Emp]
ADD Sr_No Int

И если вы хотите, чтобы это автоматически увеличивалось

ALTER TABLE [Emp]
ADD Sr_No Int IDENTITY(1,1) NOT NULL
5 голосов
/ 27 января 2016

Правильный синтаксис для добавления столбца в таблицу:

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;
0 голосов
/ 27 апреля 2009

Возможно, будет переименование временной таблицы, если вы пытаетесь добавить столбец в начало таблицы (так как это проще, чем изменять порядок). Кроме того, если в таблице «Сотрудники» есть данные, необходимо выполнить вставку select *, чтобы можно было рассчитать идентификатор сотрудника.

...