Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Base de datos de Azure SQL en Microsoft Fabric
Usando esta sentencia, puedes insertar valores explícitos en la IDENTITY columna de una tabla.
Convenciones de sintaxis de Transact-SQL
Sintaxis
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
Argumentos
database_name
El nombre de la base de datos donde se encuentra la tabla especificada.
schema_name
El nombre del esquema que contiene la tabla.
table_name
Nombre de una tabla con una columna de identidad.
Observaciones
En cualquier momento, solo una tabla de una sesión puede tener la propiedad IDENTITY_INSERT establecida en ON. Si una tabla ya tiene esta propiedad configurada como ON, y emites una SET IDENTITY_INSERT ON instrucción para otra tabla, SQL Server devuelve un mensaje de error que indica SET IDENTITY_INSERT ya ONes , y reporta la tabla para la cual ON está establecida.
- Cuando el argumento
incrementde la IDENTITY función es positivo y el valor insertado es mayor que el valor de identidad actual de la tabla, el SQL Motor de base de datos utiliza automáticamente el nuevo valor insertado como el valor de identidad actual. - Cuando el argumento
incrementde la IDENTITY función es negativo y el valor insertado es menor que el valor de identidad actual de la tabla, SQL Server utiliza automáticamente el nuevo valor insertado como el valor de identidad actual.
La configuración de SET IDENTITY_INSERT se establece en tiempo de ejecución o ejecución y no en tiempo de análisis.
Permisos
Debes ser dueño de la mesa o tener ALTER permiso para que la ponga.
Ejemplos
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 AdventureWorks2022;
GO
Crear tabla de herramientas.
CREATE TABLE dbo.Tool
(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR (40) NOT NULL
);
GO
Insertar valores en la tabla de productos.
INSERT INTO dbo.Tool (Name)
VALUES ('Screwdriver'),
('Hammer'),
('Saw'),
('Shovel');
GO
Cree una brecha en los valores de identidad.
DELETE dbo.Tool
WHERE Name = 'Saw';
GO
SELECT *
FROM dbo.Tool;
GO
Intente insertar un valor de identificador explícito de 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
El código anterior INSERT devuelve el siguiente error:
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.
Establezca IDENTITY_INSERT en ON.
SET IDENTITY_INSERT dbo.Tool ON;
GO
Intente insertar un valor de identificador explícito de 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
SELECT *
FROM dbo.Tool;
GO
Quitar tabla de herramientas.
DROP TABLE dbo.Tool;
GO