Comment puis-je réinitialiser la colonne d'identité dans SQL Server?

Comment puis-je réinitialiser la colonne d'identité dans SQL Server?
Dans SQL Server, une colonne d'identité fait référence à une colonne qui génère automatiquement les valeurs basées sur la valeur de semence fournie et l'intervalle d'incrément.

Ce guide vous apprendra comment réinitialiser une colonne d'identité dans SQL Server, vous permettant de réinitialiser les valeurs mal configurées dans une colonne d'identité.

Identité SQL Server

Pour ajouter une colonne d'identité à une table dans SQL Server, utilisez la requête d'identité. La syntaxe de la requête d'identité dans SQL Server est comme indiqué:

Identity (Seed_value, incrément_interval);

La requête d'identité accepte deux arguments:

  1. Le semed_value fait référence à la valeur du premier enregistrement dans le tableau.
  2. incrément_interval - fait référence à la valeur spécifique ajoutée à l'enregistrement précédent dans le tableau.

Par défaut, les valeurs de graines et d'incrément sont définies sur 1. Par conséquent, le premier enregistrement du tableau a une valeur de 1, et chaque enregistrement ajouté au tableau, ajouté par 1.

Réinitialiser la colonne d'identité dans SQL Server

Laissez-nous maintenant savoir comment réinitialiser une colonne d'identité dans SQL Server et pourquoi vous devrez peut-être le faire.

Commencez par créer un exemple de table et insérer des données comme indiqué dans les requêtes ci-dessous:

Créer l'inventaire de table (
ID int identité de clé primaire (1,1) pas nul,
Product_name Varchar (255),
prix int,
quantité int
));
Insérer dans les valeurs de l'inventaire (produit_name, prix, quantité)
('Smart Watch', 110.99, 5),
('MacBook Pro', 2500.00, 10),
(«Coats d'hiver», 657.95, 2),
(«Bureau de bureau», 800.20, 7),
(«Fer à souder», 56.10, 3),
(«Trépied du téléphone», 8.95, 8);

Nous pouvons maintenant interroger les données stockées dans le tableau comme:

Sélectionnez * dans l'inventaire;

Les enregistrements résultants sont comme indiqué:

Remarquez la colonne ID; Bien que nous n'ayons pas spécifié les valeurs dans notre instruction d'insertion, la fonction d'identité génère automatiquement la valeur à partir de 1 et continue d'augmenter par un 1 pour chaque enregistrement que nous insérons.

Pourquoi réinitialiser la colonne d'identité?

Vous pouvez vous demander si la colonne d'identité contient des valeurs générées automatiquement dans un ordre logique spécifié, pourquoi dois-je réinitialiser la colonne d'identité?

Regardez ce qui arrive aux données lorsque nous supprimons un enregistrement du tableau:

Supprimer de l'inventaire où la quantité = 7;

La requête d'exemple ci-dessus devrait supprimer un enregistrement où la quantité est égale à 7.

Le tableau contient désormais les enregistrements:

Sélectionnez * dans l'inventaire;

Dans les colonnes ID, nous avons les valeurs de 1 à 6. Cependant, l'ID de 4 manque. Cela se produit lorsque nous dépassons un enregistrement de la table.

Pour résoudre ce problème, nous devons réinitialiser la colonne d'identité.

Comment réinitialiser la colonne d'identité

Pour réinitialiser la colonne d'identité dans SQL Server, nous utilisons la procédure DBCC Checkindent.

La syntaxe de la procédure est comme:

Dbcc checkident ('table_name', réensemble, new_value);

Cependant, si nous réinitialisons la colonne d'identité et essayons d'insérer des données, SQL Server renvoie une erreur. Pour résoudre ceci:

  • Créez une nouvelle table agissant comme la sauvegarde de l'ancienne table.
  • Supprimer les données de l'ancienne table
  • Réinitialisez la colonne d'identité
  • Réinsérez les données dans le nouveau tableau.

Un exemple de requête implémentant les étapes ci-dessus est comme indiqué:

Sélectionnez * dans new_inventory dans l'inventaire;
Supprimer de l'inventaire;
DBCC Checkident («inventaire», réensemence, 0);
Insérer dans l'inventaire (Product_name, Price, Quantity) SELECT Product_name, Prix, Quantité de New_inventory Order by Id ASC;

Une fois les requêtes exécutées avec succès, nous pouvons vérifier les données de la table d'inventaire comme:

Sélectionnez * dans l'inventaire;

Les enregistrements de table résultants sont comme indiqué:

Ici, la colonne ID est dans le bon ordre.

Fermeture

Ce guide couvre les bases de la fonction d'identité dans SQL Server et comment réinitialiser une colonne d'identité en cas d'erreurs.