Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment définir une clé primaire d'incrémentation automatique dans SQL Server

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.