ВСТАВКА столбца с набором IDENTITY

Страница обновлена :
Дата создания страницы :

SQL Server имеет свойство "IDENTITY", которое автоматически задает последовательное число от 1 к определенному столбцу при добавлении записи. Например, если задать идентификатор в столбце A и добавить 3 записи, столбец A автоматически заполняется значениями 1, 2 и 3 в том порядке, в котором они были добавлены.

Даже если вы используете инструкцию INSERT, значение устанавливается автоматически, поэтому нет необходимости явно задавать значение, но я думаю, что есть случаи, когда вы хотите установить значение явно, потому что оно используется для внешнего ключа и т. Д.

В качестве примера предположим, что в столбце "ID" есть таблица со свойством "IDENTITY", заданным на рисунке.

Инструкция INSERT, вставляющая значение в эту таблицу, включая столбец ID, будет выглядеть следующим образом:

insert into [テーブル名] ([ID], [Value]) values (1, 1)

Однако, когда я пытаюсь запустить его, я думаю, что появится следующая ошибка.

Msg 544, уровень 16, штат 1, линия 1 Если IDENTITY_INSERT задано значение OFF, явные значения не могут быть вставлены в столбец удостоверений таблицы 'XXXXX'.

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

Если вы действительно хотите установить его, вам нужно установить «IDENTITY_INSERT» на «ON», как описано в сообщении об ошибке. Включите IDENTITY_INSERT перед вставкой и вернитесь к выкл., когда вставка будет завершена, как показано в следующем SQL:

set identity_insert [テーブル名] on;
insert into [テーブル名] ([ID], [Value]) values (1, 1)
set identity_insert [テーブル名] off;

-- 確認
select * from [テーブル名];

Теперь можно явно задать значение и вставить его. INSERT-SELECT с использованием таблиц также допустимо.

Столбцам с идентификатором автоматически присваиваются значения из 1, но если вы явно установили значения, как описано выше, вам может быть интересно, какое число будет назначено следующим. В этом случае следующее назначенное значение присваивается из числа после наибольшего значения, добавленного в таблицу, поэтому при вставке новой записи повторяющееся значение отсутствует. (Однако есть исключения из-за инвалидности и т.д.)