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