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

Cómo definir una clave primaria de incremento automático en SQL Server

Al igual que MySQL, PostgreSQL, Oracle y muchas otras bases de datos relacionales, SQL Server se utiliza mejor cuando se asignan claves primarias únicas a la mayoría de las tablas de bases de datos.

Las ventajas de usar claves primarias numéricas incrementadas automáticamente son numerosas, pero los beneficios más impactantes son una velocidad más rápida al realizar consultas y la independencia de datos al buscar en miles de registros que pueden contener datos alterados con frecuencia en otras partes de la tabla. Con un identificador numérico consistente y único, las aplicaciones pueden aprovechar estas consultas más rápidas y confiables.

Creación de tablas básicas

Una vez conectado a su Servidor SQL, normalmente comenzaría por CREATING una nueva tabla que contiene el campo que desea usar como su clave primaria incrementada. Para nuestro ejemplo, nos quedaremos con el probado y verdadero id campo:

CREATE TABLE books (
  id              INT           NOT NULL,
  title           VARCHAR(100)  NOT NULL,
  primary_author  VARCHAR(100),
);

El problema aquí es que no tenemos forma de controlar nuestro id campo. Cuando se inserta un nuevo registro, no solo debemos ingresar manualmente un valor para id , pero tenemos que realizar una consulta con anticipación para intentar verificar ese id el valor aún no existe (una casi imposibilidad cuando se trata de muchas conexiones simultáneas).

Uso de restricciones de identidad y clave principal

La solución resulta ser usar dos opciones de restricción proporcionadas por SQL Server.

La primera es PRIMARY KEY , que como sugiere el nombre, obliga a la columna especificada a comportarse como un índice completamente único para la tabla, lo que permite búsquedas y consultas rápidas.

Mientras que SQL Server solo permite una PRIMARY KEY restricción asignada a una sola tabla, que PRIMARY KEY se puede definir para más de una columna. En un escenario de varias columnas, las columnas individuales pueden contener valores duplicados, no únicos, pero la PRIMARY KEY restricción asegura que cada combinación de valores restringidos será, de hecho, único en relación con cualquier otra combinación.

La segunda pieza del rompecabezas es la IDENTITY restricción, que informa a SQL Server que incremente automáticamente el valor numérico dentro de la columna especificada cada vez que se INSERTED un nuevo registro . Mientras que IDENTITY puede acepta dos argumentos del seed numérico desde donde comenzarán los valores, así como el increment , estos valores normalmente no se especifican con IDENTITY restricción y en su lugar se dejan como predeterminados (ambos predeterminados en 1 ).

Con este nuevo conocimiento a nuestro alcance, podemos reescribir nuestro anterior CREATE TABLE declaración agregando nuestras dos nuevas restricciones.

CREATE TABLE books (
  id              INT           NOT NULL    IDENTITY    PRIMARY KEY,
  title           VARCHAR(100)  NOT NULL,
  primary_author  VARCHAR(100),
);

Eso es todo al respecto. Ahora el id columna de nuestros books la tabla se incrementará automáticamente con cada INSERT y el id se garantiza que el campo también sea un valor único.