Semblable à MySQL, PostgreSQL, Oracle et à de nombreuses autres bases de données relationnelles, SQL Server est mieux utilisé lors de l'attribution de clés primaires uniques à la plupart des tables de base de données.
Les avantages de l'utilisation de clés primaires numériques auto-incrémentées sont nombreux, mais les avantages les plus importants sont une vitesse plus rapide lors de l'exécution de requêtes et l'indépendance des données lors de la recherche dans des milliers d'enregistrements susceptibles de contenir des données fréquemment modifiées ailleurs dans la table. Avec un identifiant numérique cohérent et unique, les applications peuvent tirer parti de ces requêtes plus rapides et plus fiables.
Création de table de base
Une fois connecté à votre serveur SQL, vous commencerez normalement par CREATING
une nouvelle table contenant le champ que vous souhaitez utiliser comme clé primaire incrémentée. Pour notre exemple, nous nous en tiendrons à l'id
qui a fait ses preuves champ :
CREATE TABLE books (
id INT NOT NULL,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Le problème ici est que nous n'avons aucun moyen de contrôler notre id
domaine. Lorsqu'un nouvel enregistrement est inséré, nous devons non seulement saisir manuellement une valeur pour id
, mais nous devons effectuer une requête à l'avance pour tenter de vérifier que id
la valeur n'existe pas déjà (une quasi-impossibilité lorsqu'il s'agit de plusieurs connexions simultanées).
Utilisation des contraintes d'identité et de clé primaire
La solution s'avère utiliser deux options de contrainte fournies par SQL Server.
La première est PRIMARY KEY
, qui, comme son nom l'indique, force la colonne spécifiée à se comporter comme un index complètement unique pour la table, permettant des recherches et des requêtes rapides.
Alors que SQL Server n'autorise qu'une seule PRIMARY KEY
contrainte affectée à une seule table, cette PRIMARY KEY
peut être défini pour plusieurs colonnes. Dans un scénario à plusieurs colonnes, des colonnes individuelles peuvent contenir des valeurs en double non uniques, mais la PRIMARY KEY
contrainte garantit que chaque combinaison des valeurs contraintes seront en fait uniques par rapport à toutes les autres combinaisons.
La deuxième pièce du puzzle est l'IDENTITY
contrainte, qui informe SQL Server d'incrémenter automatiquement la valeur numérique dans la colonne spécifiée chaque fois qu'un nouvel enregistrement est INSERTED
. Tant que IDENTITY
peut accepter deux arguments de la valeur numérique seed
d'où commenceront les valeurs ainsi que l'increment
, ces valeurs ne sont généralement pas spécifiées avec le IDENTITY
contrainte et à la place sont laissés par défaut (tous deux par défaut à 1
).
Avec ces nouvelles connaissances à portée de main, nous pouvons réécrire notre précédent CREATE TABLE
déclaration en ajoutant nos deux nouvelles contraintes.
CREATE TABLE books (
id INT NOT NULL IDENTITY PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
C'est tout ce qu'on peut en dire. Maintenant le id
colonne de nos books
la table sera automatiquement incrémentée à chaque INSERT
et le id
est également garanti que le champ est une valeur unique.