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

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

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

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

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

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

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


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

enter image description here

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


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

теперь идите свойства столбца ниже прокрутите вниз и найдите Спецификация Идентификатора раскройте его, и вы найдете Is Identity сделать это да. Теперь выберите Инкремент Идентификатора прямо под ним дайте значение, которое вы хотите увеличить в нем. 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 в say команда INSERT просто используйте:

NEXT VALUE FOR blah.blahsequence

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


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


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

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

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

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

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


будьте осторожны, если вы хотите, чтобы элементы ID были contigius или нет. Как SQLServer ID может прыгать на 1000 .

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


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