Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database w usłudze Microsoft Fabric
Umożliwia wstawianie jawnych wartości do kolumny tożsamości tabeli.
Transact-SQL konwencje składni
Składnia
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
Argumenty
database_name
Nazwa bazy danych, w której znajduje się określona tabela.
schema_name
Nazwa schematu, do którego należy tabela.
table_name
Nazwa tabeli z kolumną tożsamości.
Uwagi
W dowolnym momencie tylko jedna tabela w sesji może mieć właściwość IDENTITY_INSERT ustawioną na ON. Jeśli tabela ma już tę właściwość ustawioną na ON, a instrukcja SET IDENTITY_INSERT ON jest wystawiana dla innej tabeli, program SQL Server zwraca komunikat o błędzie informujący, że SET IDENTITY_INSERT jest już ONi zgłasza tabelę, dla której ustawiono ON.
Jeśli wstawiona wartość jest większa niż bieżąca wartość tożsamości dla tabeli, program SQL Server automatycznie używa nowej wstawionej wartości jako bieżącej wartości tożsamości.
Ustawienie SET IDENTITY_INSERT jest ustawione w czasie wykonywania lub wykonywania, a nie w czasie analizy.
Uprawnienia
Użytkownik musi być właścicielem tabeli lub mieć uprawnienia ALTER w tabeli.
Przykłady
Poniższy przykład tworzy tabelę z kolumną tożsamości i pokazuje, jak można użyć ustawienia SET IDENTITY_INSERT do wypełnienia luki w wartościach tożsamości spowodowanych przez instrukcję DELETE.
USE AdventureWorks2022;
GO
Utwórz tabelę narzędzi.
CREATE TABLE dbo.Tool
(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR (40) NOT NULL
);
GO
Wstaw wartości do tabeli products.
INSERT INTO dbo.Tool (Name)
VALUES ('Screwdriver'),
('Hammer'),
('Saw'),
('Shovel');
GO
Utwórz lukę w wartościach tożsamości.
DELETE dbo.Tool
WHERE Name = 'Saw';
GO
SELECT *
FROM dbo.Tool;
GO
Spróbuj wstawić jawną wartość identyfikatora 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
Poprzedni kod INSERT powinien zwrócić następujący błąd:
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.
Ustaw IDENTITY_INSERT na wartość ON.
SET IDENTITY_INSERT dbo.Tool ON;
GO
Spróbuj wstawić jawną wartość identyfikatora 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
SELECT *
FROM dbo.Tool;
GO
Upuść tabelę narzędzi.
DROP TABLE dbo.Tool;
GO