Puede parecer extraño, pero T-SQL tiene una IDENTITY()
propiedad y una IDENTITY()
función, cada una de las cuales tiene un propósito (similar, pero) diferente.
- La
IDENTITY()
La propiedad crea una columna de identidad en una tabla. Una columna de identidad contiene un número de identificación que se incrementa automáticamente. Esta propiedad se usa conCREATE TABLE
yALTER TABLE
declaraciones. - La
IDENTITY()
Sin embargo, la función solo se usa en unSELECT
declaración con unINTO
cláusula de tabla para insertar una columna de identidad en una nueva tabla.
También está el SQL-DMO Identity
propiedad que expone la propiedad de identidad de fila de una columna, pero no lo cubriré aquí. Microsoft informa que esta propiedad se eliminará en una versión futura de SQL Server y que debe evitar usarla en nuevos trabajos de desarrollo.
Propiedad IDENTITY()
Aquí hay un ejemplo del uso de IDENTITY()
propiedad.
CREATE TABLE Pets ( PetId int IDENTITY(1,1) PRIMARY KEY, PetName varchar(255) );
Este código crea una tabla con dos columnas. La primera columna (PetId
) es una columna de identidad (porque utilizo IDENTITY()
propiedad en su definición).
Ahora que he creado una columna de identidad, puedo insertar nombres de mascotas en PetName
columna sin necesidad de incluir un ID para cada fila.
INSERT INTO Pets (PetName) VALUES ('Homer'), ('Felix'), ('Ruff'); SELECT * FROM Pet;
Resultado:
+---------+-----------+ | PetId | PetName | |---------+-----------| | 1 | Homer | | 2 | Felix | | 3 | Ruff | +---------+-----------+
En este caso, la numeración comienza en 1 y cada fila se incrementa en 1. Esto se debe a que usé IDENTITY(1,1)
para especificar que el valor semilla es 1 y que se incrementa en 1 en cada nueva fila.
Función IDENTIDAD()
Como se mencionó, el IDENTITY()
la función se usa en un SELECT INTO
declaración. Aquí hay un ejemplo del uso de IDENTITY()
función.
SELECT IDENTITY(int, 101, 10) AS pet_id, PetName AS pet_name INTO BestFriends FROM Pets; SELECT * FROM BestFriends;
Resultado:
+----------+------------+ | pet_id | pet_name | |----------+------------| | 101 | Homer | | 111 | Felix | | 121 | Ruff | +----------+------------+
Aquí, creé una tabla llamada BestFriends
y lo rellenó desde Pets
mesa.
En este caso, comencé el conteo en 101 y lo incrementé en 10. También tenga en cuenta que la función requiere el primer argumento para especificar el tipo de datos de la columna.