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

SE APLICA A: síSQL Server síAzure SQL Database síAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Permite insertar valores explícitos en la columna identidad de una tabla.Allows explicit values to be inserted into the identity column of a table.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

database_namedatabase_name
Es el nombre de la base de datos en la que reside la tabla especificada.Is the name of the database in which the specified table resides.

schema_nameschema_name
Es el nombre del esquema al que pertenece la tabla.Is the name of the schema to which the table belongs.

table_nametable_name
Es el nombre de la tabla con una columna de identidad.Is the name of a table with an identity column.

NotasRemarks

En todo momento, solo una tabla de una sesión puede tener la propiedad IDENTITY_INSERT establecida en ON.At any time, only one table in a session can have the IDENTITY_INSERT property set to ON. Si ya existe una tabla con esta propiedad establecida en ON y se ejecuta una instrucción SET IDENTITY_INSERT ON para otra tabla, SQL ServerSQL Server devuelve un mensaje de error que indica que SET IDENTITY_INSERT ya está establecido en ON y la tabla para la que se ha establecido.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.

Si el valor insertado es mayor que el valor de identidad actual de la tabla, SQL ServerSQL Server utiliza automáticamente el nuevo valor insertado como valor de identidad actual.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.

La opción SET IDENTITY_INSERT se establece en tiempo de ejecución, no en tiempo de análisis.The setting of SET IDENTITY_INSERT is set at execute or run time and not at parse time.

PermisosPermissions

El usuario debe ser el propietario de la tabla o disponer del permiso ALTER en esta.User must own the table or have ALTER permission on the table.

EjemplosExamples

El ejemplo siguiente crea una tabla con una columna de identidad y muestra cómo se puede utilizar la opción SET IDENTITY_INSERT para rellenar un vacío en los valores de identidad causado por una instrucción 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 an error:
-- An explicit value for the identity column in table 'AdventureWorks2012.dbo.Tool' can only be specified when a column list is used and IDENTITY_INSERT is ON.
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 tambiénSee Also

CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
IDENTITY (propiedad) (Transact-SQL) IDENTITY (Property) (Transact-SQL)
SCOPE_IDENTITY (Transact-SQL) SCOPE_IDENTITY (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
Instrucciones SET (Transact-SQL)SET Statements (Transact-SQL)