Автоматическое увеличение первичного ключа в среде SQL Server Management Studio 2012


как auto increment the primary key на SQL Server таблица базы данных, я просмотрел форум, но не вижу, как это сделать.

Я посмотрел свойства, но не могу увидеть вариант, я видел ответ, где вы идете к Identity спецификация свойство и установить его в да и установить Identity increment до 1, но этот раздел неактивен, и я не могу изменить нет на да.

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

9 365

9 ответов:

убедитесь, что тип данных ключевого столбца составляет int и затем установка идентичности вручную, как показано на рисунке

enter image description here

или просто запустите этот код

-- ID is the name of the  [to be] identity column
ALTER TABLE [yourTable] DROP COLUMN ID 
ALTER TABLE [yourTable] ADD ID INT IDENTITY(1,1)

код будет работать, если ID это не единственный столбец в таблице

ссылка изображения ФИФО это

когда вы создаете таблицу, вы можете создать IDENTITY следующим образом:

CREATE TABLE (
  ID_column INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
  ...
);

The IDENTITY свойство автоинкремент столбца с номером 1. (Обратите внимание, что тип данных столбца должен быть целым числом.) Если вы хотите добавить в существующий столбец, используйте ALTER TABLE.

Edit:
Протестировано немного, и я не могу найти способ изменить свойства идентификатора через окно свойств столбца для различных таблиц. Я думаю, если вы хотите сделать столбец столбцом идентификаторов, вы должны использовать .

вы должны развернуть раздел Identity, чтобы предоставить инкремент и семя.

enter image description here

Edit: я предполагал, что у вас будет целочисленный тип данных, а не char(10). Что разумно, я бы сказал, И действительно, когда я опубликовал этот ответ

разверните базу данных, разверните таблицу щелкните правой кнопкой мыши на таблице и выберите конструкция из выпадающего списка. ITlooks like this

теперь идите свойства столбца ниже прокрутите вниз и найдите Спецификация Идентификатора раскройте его, и вы найдете Индивидуальность сделать это да. Теперь выберите Инкремент Идентификатора прямо под ним дайте значение, которое вы хотите увеличить в нем. enter image description here

возможно, я что-то упускаю, но почему это не работает с объектом последовательности? Разве это не то, что ты ищешь?

пример:

CREATE SCHEMA blah.
GO

CREATE SEQUENCE blah.blahsequence
START WITH 1
INCREMENT BY 1
NO CYCLE;

CREATE TABLE blah.de_blah_blah
(numbers bigint PRIMARY KEY NOT NULL
......etc

при ссылке на squence в команде вставки просто используйте:

NEXT VALUE FOR blah.blahsequence

дополнительная информация и опции для последовательность

когда вы используете тип данных: int вы можете выбрать строку, которую вы хотите получить autoincremented и перейти к тегу свойств столбца. Там вы можете установить идентификатор на "да". Начальное значение для автоинкремента также может быть отредактировано там. Надеюсь, я мог бы помочь;)

у меня была эта проблема, где я уже создал таблицу и не мог изменить его, не опуская на стол, так что я сделал: (Не уверен, когда они реализовали это, но это было в SQL 2016)

щелкните правой кнопкой мыши на таблице в Обозревателе объектов:

Script Table as > DROP And CREATE To > New Query Editor Window

затем выполните редактирование сценария, указанного Josien; прокрутите вниз, где CREATE TABLE найти первичный ключ и добавить IDENTITY(1,1) до конца до запятой. Бежать скрипт.

падение и создать скрипт был также полезен для меня из-за этот вопрос. (который обрабатывается сгенерированным скриптом.)

будьте осторожны, например, если вы хотите, чтобы элементы ID были contigius или нет. В качестве идентификатора SQL сервер может перейти на 1000 .

Examle: перед перезапуском ID=11 после перезагрузки вы вставляете новую строку в таблицу, тогда идентификатор будет 1012.

Если таблица уже заполнена, невозможно изменить столбец на столбец идентификаторов или преобразовать его в столбец без идентификаторов. Вам нужно будет экспортировать все данные, а затем вы можете изменить тип столбца на IDENTITY или наоборот, а затем импортировать данные обратно. Я знаю, что это болезненный процесс, но я считаю, что нет альтернативы, кроме использования последовательности, как указано в этом посте.