SET IDENTITY_INSERT (Transact-SQL)SET IDENTITY_INSERT (Transact-SQL)

APLICA-SE A: simSQL Server (a partir do 2008) simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Permite inserir valores explícitos na coluna de identidade de uma tabela.Allows explicit values to be inserted into the identity column of a table.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax


SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table { ON | OFF }  

ArgumentosArguments

database_namedatabase_name
É o nome do banco de dados no qual a tabela especificada reside.Is the name of the database in which the specified table resides.

schema_nameschema_name
É o nome do esquema ao qual a tabela pertence.Is the name of the schema to which the table belongs.

tabletable
É o nome de uma tabela com uma coluna de identidade.Is the name of a table with an identity column.

RemarksRemarks

Em qualquer momento, somente uma tabela em uma sessão pode ter a propriedade IDENTITY_INSERT definida como ON.At any time, only one table in a session can have the IDENTITY_INSERT property set to ON. Se uma tabela já possui essa propriedade definida como ON, e uma instrução SET IDENTITY_INSERT ON for emitida para outra tabela, o SQL ServerSQL Server retornará uma mensagem de erro declarando que SET IDENTITY_INSERT já é ON e informará para o que a tabela está definida como ON.If a table already has this property set to ON, and a SET IDENTITY_INSERT ON statement is issued for another table, SQL ServerSQL Server returns an error message that states SET IDENTITY_INSERT is already ON and reports the table it is set ON for.

Se o valor inserido for maior que o valor de identidade atual para a tabela, o SQL ServerSQL Server usará automaticamente o novo valor inserido como valor de identidade atual.If the value inserted is larger than the current identity value for the table, SQL ServerSQL Server automatically uses the new inserted value as the current identity value.

A configuração de IDENTITY_INSERT é definida na execução ou em tempo de execução, e não em tempo de análise.The setting of SET IDENTITY_INSERT is set at execute or run time and not at parse time.

PermissõesPermissions

O usuário deve ser proprietário da tabela ou ter a permissão ALTER na tabela.User must own the table or have ALTER permission on the table.

ExemplosExamples

O exemplo a seguir cria uma tabela com uma coluna de identidade e mostra como a configuração SET IDENTITY_INSERT pode ser usada para preencher uma lacuna nos valores de identidade causados por uma instrução DELETE.The following example creates a table with an identity column and shows how the SET IDENTITY_INSERT setting can be used to fill a gap in the identity values caused by a DELETE statement.

USE AdventureWorks2012;  
GO  
-- Create tool table.  
CREATE TABLE dbo.Tool(  
   ID INT IDENTITY NOT NULL PRIMARY KEY,   
   Name VARCHAR(40) NOT NULL  
);  
GO  
-- Inserting values into products table.  
INSERT INTO dbo.Tool(Name)   
VALUES ('Screwdriver')  
        , ('Hammer')  
        , ('Saw')  
        , ('Shovel');  
GO  

-- Create a gap in the identity values.  
DELETE dbo.Tool  
WHERE Name = 'Saw';  
GO  

SELECT *   
FROM dbo.Tool;  
GO  

-- Try to insert an explicit ID value of 3;  
-- should return a warning.  
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel');  
GO  
-- SET IDENTITY_INSERT to ON.  
SET IDENTITY_INSERT dbo.Tool ON;  
GO  

-- Try to insert an explicit ID value of 3.  
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel');  
GO  

SELECT *   
FROM dbo.Tool;  
GO  
-- Drop products table.  
DROP TABLE dbo.Tool;  
GO  

Consulte TambémSee Also

CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
IDENTITY (Propriedade) (Transact-SQL) IDENTITY (Property) (Transact-SQL)
SCOPE_IDENTITY (Transact-SQL) SCOPE_IDENTITY (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
Instruções SET (Transact-SQL)SET Statements (Transact-SQL)