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.