Автоматическое увеличение первичного ключа в среде SQL Server Management Studio 2012
как auto increment
the primary key
на SQL Server
таблица базы данных, я просмотрел форум, но не вижу, как это сделать.
Я посмотрел свойства, но не могу увидеть вариант, я видел ответ, где вы идете к Identity
спецификация свойство и установить его в да и установить Identity increment
до 1, но этот раздел неактивен, и я не могу изменить нет на да.
там должен быть простой способ сделать это, но я не могу найти его.
9 ответов:
убедитесь, что тип данных ключевого столбца составляет
int
и затем установка идентичности вручную, как показано на рисункеили просто запустите этот код
-- 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, чтобы предоставить инкремент и семя.
Edit: я предполагал, что у вас будет целочисленный тип данных, а не char(10). Что разумно, я бы сказал, И действительно, когда я опубликовал этот ответ
разверните базу данных, разверните таблицу щелкните правой кнопкой мыши на таблице и выберите конструкция из выпадающего списка.
теперь идите свойства столбца ниже прокрутите вниз и найдите Спецификация Идентификатора раскройте его, и вы найдете Индивидуальность сделать это да. Теперь выберите Инкремент Идентификатора прямо под ним дайте значение, которое вы хотите увеличить в нем.
возможно, я что-то упускаю, но почему это не работает с объектом последовательности? Разве это не то, что ты ищешь?
пример:
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 или наоборот, а затем импортировать данные обратно. Я знаю, что это болезненный процесс, но я считаю, что нет альтернативы, кроме использования последовательности, как указано в этом посте.