ВСТАВЛЕННЯ стовпця з набором посвідчень
SQL Server має властивість "ПОСВІДЧЕННЯ", яка автоматично встановлює послідовне число від 1 до певного стовпця під Вільний час додавання запису. Наприклад, якщо встановити посвідчення у стовпці A і додати 3 записи, стовпець A автоматично заповнюється значеннями 1, 2 і 3 в тому порядку, в якому їх додано.
Навіть якщо ви використовуєте оператор INSERT, значення встановлюється автоматично, тому немає необхідності явно встановлювати значення, але я думаю, що бувають випадки, коли ви хочете встановити значення явно, тому що воно використовується для зовнішнього ключа тощо.
Наприклад, припустимо, що в стовпці "ID" є таблиця з властивістю "IDENTITY", встановленою в стовпці "ID", як показано на малюнку.
Оператор INSERT, який вставляє значення в цю таблицю, включно зі стовпцем ID, виглядатиме так:
insert into [テーブル名] ([ID], [Value]) values (1, 1)
Однак, коли я намагаюся запустити його, я думаю, що наступна помилка з'явиться.
MSG 544, рівень 16, держава 1, рядок 1 Якщо для IDENTITY_INSERT встановлено значення OFF, явні значення не можна вставити в стовпець посвідчення таблиці "XXXXX".
Передбачається, що стовпці, для яких спочатку встановлено значення IDENTITY, автоматично встановлюються, тому не можна явно встановити значення.
Якщо ви дійсно хочете встановити його, вам потрібно встановити "IDENTITY_INSERT" на "ON", як описано в повідомленні про помилку. Увімкніть IDENTITY_INSERT перед вставленням і поверніться до OFF, коли вставлення буде завершено, як у такому SQL:
set identity_insert [テーブル名] on;
insert into [テーブル名] ([ID], [Value]) values (1, 1)
set identity_insert [テーブル名] off;
-- 確認
select * from [テーブル名];
Тепер ви можете явно встановити значення та вставити його. INSERT-SELECT за допомогою таблиць також є дійсним.
Стовпці з ПОСВІДЧЕННЯМ автоматично призначаються значеннями з 1, але якщо ви явно встановите значення, як описано вище, вам може бути цікаво, яке число буде присвоєно далі. У цьому випадку наступне призначене значення присвоюється з числа після найвищого доданого значення до таблиці, тому під час вставлення нового запису немає повторюваного значення. (Однак, є винятки через інвалідність і т.д.)