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

IDENTITY() vs IDENTITY() en SQL Server:¿Cuál es la diferencia?

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 con CREATE TABLE y ALTER TABLE declaraciones.
  • La IDENTITY() Sin embargo, la función solo se usa en un SELECT declaración con un INTO 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.