Вмъкване на колона с набор за самоличност

Страницата се актуализира :
Дата на създаване на страница :

SQL Server има свойство "Самоличност", което автоматично задава поредния номер от 1 на конкретна колона, когато добавяте запис. Ако например зададете самоличност в колона А и добавите 3 записа, колона А автоматично се попълва със стойности от 1, 2 и 3 в реда, в който сте ги добавили.

Дори да използвате декларация INSERT, стойността се задава автоматично, така че няма нужда изрично да зададете стойността, но мисля, че има случаи, в които искате да зададете стойността изрично, защото се използва за чужд ключ и т.н.

Като пример, да предположим, че има таблица със свойството "Самоличност", зададено в графата "ИД", както е показано на фигурата.

Вмъкване на декларация, която вмъква стойност в тази таблица, включително колоната ID, би изглеждала така:

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

Въпреки това, когато се опитам да го стартирам, мисля, че ще се появи следната грешка.

MSG 544, ниво 16 състояние 1, ред 1 Когато IDENTITY_INSERT е зададено на OFF, не могат да се вмъкват изрични стойности в колоната за самоличност на таблицата "XXXXX".

Колоните, които първоначално са зададени на самоличност, се приема, че имат стойности, зададени автоматично, така че не можете изрично да зададете стойностите.

Ако наистина искате да го зададете, трябва да зададете "IDENTITY_INSERT" на "ON", както е описано в съобщението за грешка. Включете IDENTITY_INSERT преди вмъкване и обратно към OFF, когато вмъкването завърши, както в следния SQL:

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

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

Вече можете изрично да зададете стойността и да я вмъкнете. Вмъкване-ИЗБЕРЕТЕ с помощта на таблици също е валиден.

Колоните с самоличност автоматично се присвояват стойности от 1, но ако изрично зададете стойностите, както е описано по-горе, може да се чудите какъв номер ще бъде присвоен след това. В този случай следващата присвоена стойност се присвоява от номера след най-високата добавена стойност към таблицата, така че няма дублирана стойност, когато е вмъкнат нов запис. (Има обаче изключения поради увреждания и т.н.)