SQL

Cómo crear una columna IDENTITY en una tabla de SQL Server

Estrada Web Group
jiestrada
Cómo crear una columna IDENTITY en una tabla de SQL Server

Resumen: en este tutorial, aprenderás cómo usar la propiedad IDENTITY de SQL Server para agregar una columna de identidad a una tabla.

Introducción a la columna IDENTITY de SQL Server

Para crear una columna de identidad para una tabla, debes utilizar la propiedad IDENTITY de la siguiente manera:

IDENTITY[(semilla, incremento)]

En esta sintaxis:

  • La semilla es el valor de la primera fila cargada en la tabla.
  • El incremento es el valor incremental agregado al valor de identidad de la fila anterior.

El valor predeterminado de la semilla e incremento es 1, es decir, (1,1). Significa que la primera fila, que se cargó en la tabla, tendrá el valor uno, la segunda fila tendrá el valor de 2 y así sucesivamente.

Supongamos que deseas que el valor de la columna de identidad de la primera fila sea 10 y el valor incremental sea 10, usa la siguiente sintaxis:

IDENTITY (10,10)

Ten en cuenta que SQL Server te permite tener solo una columna de identidad por tabla.

Ejemplo de IDENTITY de SQL Server

Vamos a crear un nuevo esquema llamado hr para practicar:

CREATE SCHEMA hr;

La siguiente declaración crea una nueva tabla usando la propiedad IDENTITY para la columna del número de identificación personal:

CREATE TABLE hr.person (
    person_id INT IDENTITY(1,1) PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    gender CHAR(1) NOT NULL
);

Primero, inserta una nueva fila en la tabla de personas:

INSERT INTO hr.person(first_name, last_name, gender)
OUTPUT inserted.person_id
VALUES('Estrada','Web', 'G');

El resultado es:

person_id first_name last_name gender
1 Estrada Web G

Como se puede ver claramente en el resultado, la primera fila se ha cargado con el valor de uno en la columna person_id.

En segundo lugar, inserta otra fila en la tabla de personas:

INSERT INTO hr.person(first_name, last_name, gender)
OUTPUT inserted.person_id
VALUES('Jane','Doe','F');

El resultado es:

person_id first_name last_name gender
1 Estrada Web G
2 Jane Doe F

Como puedes ver claramente en el resultado, la segunda fila tiene el valor de dos en la columna person_id.

Reutilización de valores de identidad

SQL Server no reutiliza los valores de identidad. Si insertas una fila en la columna de identidad y la declaración de inserción falla o se revierte, el valor de identidad se pierde y no se generará nuevamente. Esto da como resultado lagunas en la columna de identidad.

Considera el siguiente ejemplo.

Primero, crea dos tablas más en el esquema de recursos humanos denominadas position y person_position:

CREATE TABLE hr. POSITION (
              position_id INT IDENTITY (1, 1) PRIMARY KEY,
              position_name VARCHAR (255) NOT NULL,
);

CREATE TABLE hr.person_position (
              person_id INT,
              position_id INT,
              PRIMARY KEY (person_id, position_id),
              FOREIGN KEY (person_id) REFERENCES hr.person (person_id),
              FOREIGN KEY (position_id) REFERENCES hr. POSITION (position_id)
);

En segundo lugar, inserta una nueva persona y asígnale un puesto a esta nueva persona insertando una nueva fila en la tabla person_position:

BEGIN TRANSACTION
    BEGIN TRY
        -- insert a new person
        INSERT INTO hr.person(first_name,last_name, gender)
        VALUES('Joan','Smith','F');

        -- assign the person a position
        INSERT INTO hr.person_position(person_id, position_id)
        VALUES(@@IDENTITY, 1);
    END TRY
    BEGIN CATCH
         IF @@TRANCOUNT > 0 
            ROLLBACK TRANSACTION; 
    END CATCH
    IF @@TRANCOUNT > 0 
        COMMIT TRANSACTION;
GO

En este ejemplo, la primera instrucción de inserción se ejecutó correctamente. Sin embargo, el segundo falló debido a que no había ninguna posición con id uno en la tabla de posiciones. Debido al error, se revirtió toda la transacción.

Debido a que la primera declaración INSERT consumió el valor de identidad de tres y la transacción se revirtió, el siguiente valor de identidad será cuatro, como se muestra en la siguiente declaración:

INSERT INTO hr.person(first_name,last_name,gender)
OUTPUT inserted.person_id
VALUES('Peter','Drucker','F');

Resultado:

person_id first_name last_name gender
1 Estrada Web G
2 Jane Doe F
4 Peter Drucker F

En este tutorial, aprendiste a usar la propiedad IDENTITY de SQL Server para crear una columna de identidad para una tabla.

Artículos de la serie:

Compartir artículo:

Más artículos geniales

Cómo agregar una o más columnas a una tabla en SQL con ALTER TABLE ADD

Cómo agregar una o más columnas a una tabla en SQL con ALTER TABLE ADD

Resumen: en este artículo, aprenderás a usar la instrucción ALTER TABLE ADD de SQL Server para agregar una o más columnas a una tabla.

Ver artículo completo
¿Qué son las sentencias INNER JOIN de SQL y cómo funciona?

¿Qué son las sentencias INNER JOIN de SQL y cómo funciona?

En este tutorial, aprenderás a usar la cláusula o sentencia INNER JOIN de SQL Server para realizar consultar datos en varias tablas.

Ver artículo completo
¿Qué es y para que sirve SQL Joins?

¿Qué es y para que sirve SQL Joins?

Una cláusula SQL JOIN se usa para combinar filas de dos o más tablas, en función de una columna relacionada entre ellas.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla
;