Notatka
Dostęp do tej strony wymaga autoryzacji. Może 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
Korzystając z tego stwierdzenia, możesz wstawić wartości jawne do kolumny IDENTITY 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ę dana tabela.
schema_name
Nazwa schematu, który zawiera tabelę.
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 , ONa wydasz SET IDENTITY_INSERT ON polecenie dla innej tabeli, SQL Server zwraca komunikat o błędzie, że SET IDENTITY_INSERT jest już ON, i raportuje tabelę, dla której ON jest ustawiona.
- Gdy
incrementargument IDENTITY funkcji jest dodatni, a wartość wstawiona jest większa niż aktualna wartość tożsamości dla tabeli, SQL Database Engine automatycznie używa nowej wartości jako aktualnej wartości tożsamości. - Gdy
incrementargument IDENTITY funkcji jest ujemny, a wartość wstawiona jest mniejsza niż aktualna wartość tożsamości dla tabeli, SQL Server automatycznie używa nowej wartości jako aktualnej wartości tożsamości.
Ustawienie SET IDENTITY_INSERT jest ustawione w czasie wykonywania lub wykonywania, a nie w czasie analizy.
Uprawnienia
Musisz być właścicielem stołu lub mieć ALTER na niego pozwolenie.
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
Poprzedzający INSERT kod zwraca 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