Как «автоматически увеличивать» «первичный ключ» в таблице базы данных «SQL Server», я просмотрел форум, но не вижу, как.
Я посмотрел свойства, но не вижу опции, я видел ответ, в котором вы переходите к свойству спецификации Identity
и устанавливаете его в «да» и устанавливаете «приращение идентичности» в 1, но этот раздел затерт, и я не могу изменить нет на да.
Должен быть простой способ сделать это, но я не могу его найти.
Убедитесь, что тип данных столбца «int» равен «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
.
Редактировать:
Протестировано немного, и я не могу найти способ изменить свойства Identity через окно «Свойства столбца» для различных таблиц. Я предполагаю, что если вы хотите сделать столбец столбцом, то вы ДОЛЖНЫ использовать команду ALTER TABLE
.
Вы должны расширить раздел «Идентичность», чтобы раскрыть приращение и начальное значение.
введите описание изображения здесь! Редактировать: Я предполагал, что у вас будет целочисленный тип данных, а не char (10). Что разумно, я бы сказал, и действительно, когда я опубликовал этот ответ
Расширьте свою базу данных, разверните таблицу, щелкните правой кнопкой мыши по таблице и выберите design в раскрывающемся списке. Похоже на это! Теперь перейдите Свойства столбца ниже, прокрутите вниз и найдите Спецификация идентичности , разверните ее, и вы обнаружите, что Идентичность делает это Да. Теперь выберите Увеличение идентичности прямо под ним, чтобы получить значение, которое вы хотите увеличить в нем. введите описание изображения здесь!
Возможно, я что-то упустил, но почему это не работает с объектом SEQUENCE? Разве это не то, что вы ищете?
Пример:
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
При ссылке на приседание, скажем, команда INSERT просто используйте:
NEXT VALUE FOR blah.blahsequence
Больше информации и вариантов для SEQUENCE
Когда вы используете Data Type: int, вы можете выбрать строку, которую хотите автоматически увеличить, и перейти к тегу свойств столбца. Там вы можете установить личность «да». Начальное значение для автоинкремента также можно редактировать там. Надеюсь, я смогу помочь;)
Будьте осторожны, как если бы вы хотели, чтобы элементы ID были смежными или нет. Как SQLSERVER ID может прыгать на 1000 .
Экзамен: перед перезапуском ID = 11 после перезапуска вы вставляете новую строку в таблицу, затем идентификатор будет 1012.
У меня была эта проблема, когда я уже создал таблицу и не мог изменить ее, не уронив таблицу, поэтому я и сделал: (Не уверен, когда они реализовали это, но имели это в SQL 2016)
Щелкните правой кнопкой мыши таблицу в обозревателе объектов:
Таблица скриптов как > УБРАТЬ И СОЗДАТЬ > Новое окно редактора запросов
Затем выполните редактирование сценария, сказанного Josien; прокрутите вниз, где находится «CREATE TABLE», найдите свой Основной ключ и добавьте «IDENTITY (1,1)» до конца перед запятой. Запустите скрипт.
Сценарий DROP и CREATE также помог мне из-за этой проблемы. (Который обрабатывает сгенерированный скрипт.)
Если таблица уже заполнена, невозможно изменить столбец на столбец IDENTITY или преобразовать его в столбец без IDENTITY. Вам нужно будет экспортировать все данные, затем вы можете изменить тип столбца на IDENTITY или наоборот, а затем импортировать данные обратно. Я знаю, что это болезненный процесс, но я считаю, что нет альтернативы, кроме использования последовательности, упомянутой в этом посте.