SET IDENTITY_INSERT (Transact-SQL)
gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics
Tillåter att explicita värden infogas i identitetskolumnen i en tabell.
Transact-SQL syntaxkonventioner
Syntax
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
Argument
database_name
Namnet på databasen där den angivna tabellen finns.
schema_name
Namnet på schemat som tabellen tillhör.
table_name
Namnet på en tabell med en identitetskolumn.
Anmärkningar
När som helst kan endast en tabell i en session ha egenskapen IDENTITY_INSERT
inställd på ON
. Om en tabell redan har den här egenskapen inställd på ON
, och en SET IDENTITY_INSERT ON
-instruktion utfärdas för en annan tabell, returnerar SQL Server ett felmeddelande som anger SET IDENTITY_INSERT
redan är ON
och rapporterar tabellen som ON
har angetts för.
Om värdet som infogas är större än det aktuella identitetsvärdet för tabellen använder SQL Server automatiskt det nya infogade värdet som aktuellt identitetsvärde.
Inställningen för SET IDENTITY_INSERT
anges vid körnings- eller körningstid och inte vid parsningstid.
Behörigheter
Användaren måste äga tabellen eller ha ALTER
behörighet i tabellen.
Exempel
I följande exempel skapas en tabell med en identitetskolumn och visar hur inställningen SET IDENTITY_INSERT
kan användas för att fylla ett tomrum i identitetsvärdena som orsakas av en DELETE
-instruktion.
USE AdventureWorks2022;
GO
Skapa verktygstabell.
CREATE TABLE dbo.Tool
(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR (40) NOT NULL
);
GO
Infoga värden i produkttabellen.
INSERT INTO dbo.Tool (Name)
VALUES ('Screwdriver'),
('Hammer'),
('Saw'),
('Shovel');
GO
Skapa en lucka i identitetsvärdena.
DELETE dbo.Tool
WHERE Name = 'Saw';
GO
SELECT *
FROM dbo.Tool;
GO
Försök att infoga ett explicit ID-värde på 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
Föregående INSERT
kod bör returnera följande fel:
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.
Ange IDENTITY_INSERT
till ON
.
SET IDENTITY_INSERT dbo.Tool ON;
GO
Försök att infoga ett explicit ID-värde på 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
SELECT *
FROM dbo.Tool;
GO
Ta bort verktygstabell.
DROP TABLE dbo.Tool;
GO