sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo usar la función IDENTITY() en SQL Server

En SQL Server, puede usar IDENTITY() función para insertar una columna de identidad en una nueva tabla.

Sin embargo, esta función no debe confundirse con la IDENTITY() propiedad , que se usa con CREATE TABLE y ALTER TABLE declaraciones.

La IDENTITY() función se usa solo en un SELECT declaración con un INTO cláusula de tabla. Por lo tanto, puede usarlo al transferir datos de una tabla a otra, por ejemplo.

Sintaxis

La sintaxis es así:

IDENTITY (data_type [ , seed , increment ] ) AS column_name

El tipo_de_datos El argumento especifica el tipo de datos de la columna de identidad. Los tipos de datos válidos son cualquier tipo de datos de la categoría de tipos de datos enteros, excepto bit. y decimales .

La semilla es el valor que se usa para la primera fila cargada en la tabla.

El incremento es el valor incremental que se agrega al valor de identidad de la fila anterior que se cargó.

nombre_columna El argumento proporciona el nombre de la columna de identidad que desea crear.

Ejemplo 1:uso básico

Aquí hay un ejemplo de código básico.

SELECT 
  IDENTITY(int, 101, 10) AS pet_id,
  PetName AS pet_name
INTO BestFriends
FROM Pets;

Esto selecciona datos de las Mascotas y la inserta en una nueva tabla llamada BestFriends . La primera columna es una columna de identidad que creo con IDENTITY() función. En este caso, configuro la semilla en 101 y el incremento en 10. Llamo a esa columna pet_id .

Llamo a la segunda columna pet_name , y lo relleno desde la columna llamada PetName .

Esto es lo que las mascotas la tabla se parece a:

CREATE TABLE Pets (
    PetId int IDENTITY(1,1) PRIMARY KEY, 
    PetName varchar(255)
    );
INSERT INTO Pets (PetName)
VALUES ('Homer'), ('Felix'), ('Ruff');

SELECT * FROM Pet;

Resultado:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Homer     |
| 2       | Felix     |
| 3       | Ruff      |
+---------+-----------+

Y esto es lo que los BestFriends la tabla se ve después de transferir los datos:

SELECT * FROM BestFriends;

Resultado:

+----------+------------+
| pet_id   | pet_name   |
|----------+------------|
| 101      | Homer      |
| 111      | Felix      |
| 121      | Ruff       |
+----------+------------+

Entonces, los nombres de las mascotas siguen siendo los mismos, pero la columna de identidad contiene valores diferentes (porque usé IDENTITY(int, 101, 10) , en comparación con IDENTITY(1,1) para las mascotas tabla).