Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
База данных SQL в Microsoft Fabric
Позволяет вставлять явные значения в столбец идентификаторов таблицы.
Соглашения о синтаксисе Transact-SQL
Синтаксис
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
Аргументы
database_name
Имя базы данных, в которой находится указанная таблица.
schema_name
Имя схемы, к которой принадлежит таблица.
table_name
Имя таблицы с столбцом удостоверений.
Замечания
В любое время только одна таблица в сеансе может иметь свойство IDENTITY_INSERT для ON. Если для таблицы уже задано значение ON, а для другой таблицы выдана инструкция SET IDENTITY_INSERT ON, SQL Server возвращает сообщение об ошибке, которое SET IDENTITY_INSERT уже ON, и сообщает таблицу, для которой заданы ON.
Если вставленное значение больше текущего значения удостоверения для таблицы, SQL Server автоматически использует новое вставленное значение в качестве текущего значения удостоверения.
Параметр SET IDENTITY_INSERT устанавливается во время выполнения или выполнения, а не во время синтаксического анализа.
Разрешения
Пользователь должен принадлежать таблице или иметь разрешение ALTER на таблицу.
Примеры
В следующем примере создается таблица со столбцом идентификаторов, и показывается, как можно использовать параметр SET IDENTITY_INSERT для заполнения промежутков между значениями идентификаторов, вызванных выполнением инструкции DELETE.
USE AdventureWorks2022;
GO
Создайте таблицу инструментов.
CREATE TABLE dbo.Tool
(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR (40) NOT NULL
);
GO
Вставка значений в таблицу продуктов.
INSERT INTO dbo.Tool (Name)
VALUES ('Screwdriver'),
('Hammer'),
('Saw'),
('Shovel');
GO
Создайте пробел в значениях удостоверений.
DELETE dbo.Tool
WHERE Name = 'Saw';
GO
SELECT *
FROM dbo.Tool;
GO
Попробуйте вставить явное значение идентификатора 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
Предыдущий INSERT код должен возвращать следующую ошибку:
An explicit value for the identity column in table 'AdventureWorks2022.dbo.Tool' can only be specified when a column list is used and IDENTITY_INSERT is ON.
Задайте для IDENTITY_INSERT значение ON.
SET IDENTITY_INSERT dbo.Tool ON;
GO
Попробуйте вставить явное значение идентификатора 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
SELECT *
FROM dbo.Tool;
GO
Удалить таблицу инструментов.
DROP TABLE dbo.Tool;
GO