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
Umožňuje explicitní hodnoty vložit 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 nachází zadaná tabulka.
schema_name
Název schématu, do kterého tabulka patří.
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 již tabulka má tuto vlastnost nastavenou na ONa příkaz SET IDENTITY_INSERT ON je vydán pro jinou tabulku, SQL Server vrátí chybovou zprávu, která uvádí, SET IDENTITY_INSERT je již ONa hlásí tabulku, pro kterou je nastavena ON.
Pokud je vložená hodnota větší než aktuální hodnota identity pro tabulku, SQL Server automaticky použije novou 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í
Uživatel musí vlastnit tabulku nebo mít k tabulce oprávnění ALTER.
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í kód INSERT by měl vrátit 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
- VYTVOŘIT TABULKU (Transact-SQL)
-
CREATE TABLE (Transact-SQL) IDENTITY (vlastnost) -
SCOPE_IDENTITY (Transact-SQL) -
INSERT (Transact-SQL) - příkazy
SET (Transact-SQL)