Как добавить первичный ключ auto_increment в базу данных SQL Server? - PullRequest
53 голосов
/ 21 июля 2011

У меня есть настроенная таблица, в которой на данный момент нет первичного ключа. Все, что мне нужно сделать, это добавить primary key, no null, auto_increment.

Я работаю с базой данных Microsoft SQL Server. Я понимаю, что это не может быть сделано в одной команде, но каждая команда, которую я пробую, продолжает возвращать синтаксические ошибки.

редактировать ---------------

Я создал первичный ключ и даже установил его как не нуль. Тем не менее, я не могу настроить auto_increment.

Я пробовал:

ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment

Я использую NVARCHAR, потому что он не позволил бы мне установить NOT NULL в int

Ответы [ 6 ]

110 голосов
/ 21 июля 2011

Это можно сделать одной командой. Вам необходимо установить свойство IDENTITY для "auto number":

ALTER TABLE MyTable ADD mytableID int NOT NULL IDENTITY (1,1) PRIMARY KEY

Точнее, чтобы установить ограничение уровня именованной таблицы:

ALTER TABLE MyTable
   ADD MytableID int NOT NULL IDENTITY (1,1),
   CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (MyTableID)

См. ALTER TABLE и IDENTITY на MSDN

21 голосов
/ 21 июля 2011

Если таблица уже содержит данные и вы хотите изменить один из столбцов на идентификатор:

Сначала создайте новую таблицу с такими же столбцами и укажите первичный ключ-столбец:

create table TempTable
(
    Id int not null identity(1, 1) primary key
    --, Other columns...
)

Затем скопируйте все строки из исходной таблицы в новую таблицу, используя стандартное insert -статум.

Затем бросьте исходную таблицу.

И, наконец, переименуйте TempTable во что угодно, используя sp_rename:

http://msdn.microsoft.com/en-us/library/ms188351.aspx

13 голосов
/ 21 июля 2011

Вы также можете выполнить это действие через SQL Server Management Studio.

Щелкните правой кнопкой мыши по выбранной вами таблице -> Изменить

Щелкните правой кнопкой мыши поле, которое вы хотите установить в качестве PK -> Установить первичный ключ

В разделе «Свойства столбца» задайте для «Идентификационная информация» значение «Да», затем укажите начальное значение и значение приращения.

Тогда в будущем, если вы захотите написать что-то подобное, вы можете щелкнуть правой кнопкой мыши по таблице, которую вы только что изменили, и выбрать

"СЦЕНАРИЙ СТОЛ КАК" -> СОЗДАТЬ

, чтобы вы могли сами увидеть правильный синтаксис для выполнения этого действия.

1 голос
/ 31 июля 2017

Если у вас есть столбец, это очень просто.

Используя конструктор, вы можете установить столбец как тождество (1,1): щелкните правой кнопкой мыши таблицу → дизайн → частично слева (щелкните правой кнопкой мыши)) → свойства → в столбцах идентификаторов выберите столбец #.


Свойства :

enter image description here

Идентификационный столбец :

enter image description here

0 голосов
/ 13 ноября 2017

вы можете попробовать это ... ALTER TABLE Your_Table ADD table_ID int NOT NULL ПЕРВИЧНЫЙ КЛЮЧ auto_increment;

0 голосов
/ 26 сентября 2017

В SQL Server 2008:

  • Щелкните правой кнопкой мыши по столу
  • Перейти к дизайну
  • Выберите числовой тип данных
  • Добавить имя в новый столбец
  • Задайте идентификационные данные для «ДА»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...