Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
sql database v Microsoft Fabric
Použitím tohoto tvrzení můžete vložit explicitní hodnoty do sloupce IDENTITY tabulky.
Syntax
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
Argumenty
database_name
Název databáze, ve které se daná tabulka nachází.
schema_name
Název schématu, které tabulku obsahuje.
table_name
Název tabulky se sloupcem identity.
Poznámky
Kdykoli může mít vlastnost IDENTITY_INSERT nastavenou na ONpouze jednu tabulku v relaci. Pokud má tabulka tuto vlastnost nastavenou na , ONa vydáte SET IDENTITY_INSERT ON příkaz pro jinou tabulku, SQL Server vrátí chybovou zprávu, která uvádíSET IDENTITY_INSERT, že je již ON, a nahlásí tabulku, pro kterou ON je nastavena.
- Když
incrementje argument IDENTITY funkce kladný a vložená hodnota je větší než aktuální hodnota identity tabulky, SQL Database Engine automaticky použije nově vloženou hodnotu jako aktuální hodnotu identity. - Když
incrementje argument IDENTITY funkce záporný a vložená hodnota je menší než aktuální hodnota identity tabulky, SQL Server automaticky použije nově vloženou hodnotu jako aktuální hodnotu identity.
Nastavení SET IDENTITY_INSERT je nastaveno při spuštění nebo spuštění, nikoli v době analýzy.
Dovolení
Musíte vlastnit stůl nebo mít ALTER povolení k jeho umístění.
Příklady
Následující příklad vytvoří tabulku se sloupcem identity a ukazuje, jak se dá nastavení SET IDENTITY_INSERT použít k vyplnění mezery v hodnotách identity způsobených příkazem DELETE.
USE AdventureWorks2022;
GO
Vytvoření tabulky nástrojů
CREATE TABLE dbo.Tool
(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR (40) NOT NULL
);
GO
Vložte hodnoty do tabulky produktů.
INSERT INTO dbo.Tool (Name)
VALUES ('Screwdriver'),
('Hammer'),
('Saw'),
('Shovel');
GO
Vytvořte mezeru v hodnotách identity.
DELETE dbo.Tool
WHERE Name = 'Saw';
GO
SELECT *
FROM dbo.Tool;
GO
Zkuste vložit explicitní hodnotu ID 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
Předchozí INSERT kód vrací následující chybu:
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.
Nastavte IDENTITY_INSERT na ON.
SET IDENTITY_INSERT dbo.Tool ON;
GO
Zkuste vložit explicitní hodnotu ID 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
SELECT *
FROM dbo.Tool;
GO
Položte stůl na nářadí.
DROP TABLE dbo.Tool;
GO
Související obsah
- CREATE TABLE (Transact-SQL)
- CREATE TABLE (Transact-SQL) IDENTITY (Vlastnost)
-
SCOPE_IDENTITY (Transact-SQL) - INSERT (Transact-SQL)
- SET Příkazy (Transact-SQL)