TechNet
Exportar (0) Imprimir
Expandir todo

SET IDENTITY_INSERT (Transact-SQL)

 

**ESTE TEMA SE APLICA A:** ![](../Image/Applies%20to/yes.png)SQL Server \(a partir de 2008\) ![](../Image/Applies%20to/yes.png)Base de datos SQL de Azure ![](../Image/Applies%20to/no.png)Almacenamiento de datos SQL de Azure ![](../Image/Applies%20to/no.png)Almacenamiento de datos paralelos

Permite insertar valores explícitos en la columna identidad de una tabla.

Se aplica a: de SQL Server (SQL Server 2008 a la versión actual), Base de datos SQL de Azure.

Topic link icon Convenciones de sintaxis de Transact-SQL

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

database_name
Es el nombre de la base de datos en la que reside la tabla especificada.

schema_name
Es el nombre del esquema al que pertenece la tabla.

table
Es el nombre de la tabla con una columna de identidad.

En todo momento, solo una tabla de una sesión puede tener la propiedad IDENTITY_INSERT establecida en 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 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.

Si el valor insertado es mayor que el valor de identidad actual de la tabla, SQL Server utiliza automáticamente el nuevo valor insertado como valor de identidad actual.

La opción SET IDENTITY_INSERT se establece en tiempo de ejecución, no en tiempo de análisis.

El usuario debe ser el propietario de la tabla o disponer del permiso ALTER en esta.

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.

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  

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

Adiciones de comunidad

Mostrar:
© 2016 Microsoft