Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Lehetővé teszi, hogy explicit értékeket szúrjon be egy tábla identitásoszlopába.
Transact-SQL szintaxis konvenciói
Szintaxis
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
Érvek
database_name
Annak az adatbázisnak a neve, amelyben a megadott tábla található.
schema_name
Annak a sémának a neve, amelyhez a tábla tartozik.
table_name
Egy identitásoszlopot tartalmazó tábla neve.
Megjegyzések
Egy munkamenetben egyszerre csak egy tábla rendelkezhet a IDENTITY_INSERT
tulajdonság ON
értékével. Ha egy táblában már ON
van beállítva ez a tulajdonság, és egy SET IDENTITY_INSERT ON
utasítást ad ki egy másik táblához, az SQL Server egy hibaüzenetet ad vissza, amely szerint SET IDENTITY_INSERT
már ON
, és jelenti azt a táblát, amelyhez a ON
be van állítva.
Ha a beszúrt érték nagyobb, mint a tábla jelenlegi identitásértéke, az SQL Server automatikusan az új beszúrt értéket használja aktuális identitásértékként.
A SET IDENTITY_INSERT
beállítása végrehajtáskor vagy futtatáskor van beállítva, és nem elemzési időpontban.
Engedélyek
A felhasználónak rendelkeznie kell a táblával, vagy ALTER
engedéllyel kell rendelkeznie a táblában.
Példák
Az alábbi példa egy identitásoszlopot tartalmazó táblát hoz létre, és bemutatja, hogyan használható a SET IDENTITY_INSERT
beállítás a DELETE
utasítás által okozott identitásértékek közötti rés kitöltésére.
USE AdventureWorks2022;
GO
Eszköztábla létrehozása.
CREATE TABLE dbo.Tool
(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR (40) NOT NULL
);
GO
Értékek beszúrása a termékek táblájába.
INSERT INTO dbo.Tool (Name)
VALUES ('Screwdriver'),
('Hammer'),
('Saw'),
('Shovel');
GO
Hozzon létre egy rést az identitásértékekben.
DELETE dbo.Tool
WHERE Name = 'Saw';
GO
SELECT *
FROM dbo.Tool;
GO
Próbáljon meg beszúrni egy 3-ás explicit azonosítóértéket.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
Az előző INSERT
kódnak a következő hibát kell visszaadnia:
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.
Állítsa IDENTITY_INSERT
ON
értékre.
SET IDENTITY_INSERT dbo.Tool ON;
GO
Próbáljon meg beszúrni egy 3-ás explicit azonosítóértéket.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
SELECT *
FROM dbo.Tool;
GO
Eszköztábla elvetése.
DROP TABLE dbo.Tool;
GO