Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Database SQL in Microsoft Fabric
Consente l'inserimento di valori espliciti nella colonna Identity di una tabella.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
Argomenti
database_name
Nome del database in cui risiede la tabella specificata.
schema_name
Nome dello schema a cui appartiene la tabella.
table_name
Nome di una tabella con una colonna Identity.
Osservazioni:
In qualsiasi momento, solo una tabella di una sessione può avere la proprietà IDENTITY_INSERT impostata su ON. Se una tabella dispone già di questa proprietà impostata su ONe viene generata un'istruzione SET IDENTITY_INSERT ON per un'altra tabella, SQL Server restituisce un messaggio di errore che indica che SET IDENTITY_INSERT è già ONe segnala la tabella per cui è impostato ON.
Se il valore immesso è maggiore del valore Identity corrente per la tabella, il nuovo valore viene utilizzato automaticamente da SQL Server come valore Identity corrente.
L'impostazione di SET IDENTITY_INSERT viene impostata in fase di esecuzione o in fase di esecuzione e non in fase di analisi.
Autorizzazioni
L'utente deve essere proprietario della tabella o disporre dell'autorizzazione ALTER per la tabella.
Esempi
Nell'esempio seguente viene creata una tabella contenente una colonna Identity e viene illustrato come tramite l'impostazione di SET IDENTITY_INSERT sia possibile completare un'interruzione nella sequenza di valori Identity generata da un'istruzione DELETE.
USE AdventureWorks2022;
GO
Creare una tabella degli strumenti.
CREATE TABLE dbo.Tool
(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR (40) NOT NULL
);
GO
Inserire valori nella tabella products.
INSERT INTO dbo.Tool (Name)
VALUES ('Screwdriver'),
('Hammer'),
('Saw'),
('Shovel');
GO
Creare un gap nei valori Identity.
DELETE dbo.Tool
WHERE Name = 'Saw';
GO
SELECT *
FROM dbo.Tool;
GO
Provare a inserire un valore ID esplicito pari a 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
Il codice INSERT precedente deve restituire l'errore seguente:
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.
Impostare IDENTITY_INSERT su ON.
SET IDENTITY_INSERT dbo.Tool ON;
GO
Provare a inserire un valore ID esplicito pari a 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
SELECT *
FROM dbo.Tool;
GO
Eliminare la tabella degli strumenti.
DROP TABLE dbo.Tool;
GO