Sql server - comment reinitialiser un champ id autoincremente

Soyez le premier à donner votre avis sur cette source.

Snippet vu 34 803 fois - Téléchargée 26 fois

Contenu du snippet

Dans de nombreux cas, on souhaite pouvoir remettre un champ ID autoincrémenté à 0 ou même à une valeur donnée.
Si on supprime simplement les données de la table, le numéro de la prochaine valeur reste en mémoire avec le contenu ancien.
On peut donc faire cela suivant plusieurs possibilité :
- casser et recréer la propriété autoincrémenté
- Truncate de la table (vide celle-ci et remet le compteur à 0)
- DBCC CHECKIDENT (remet la table pour le champ autoincrément à la valeur voulue)

Source / Exemple :


------------------------------------------------------------------------
-- Cas de Truncate :
 TRUNCATE LaTable
-- > vide la table et remet le compteur à 0

------------------------------------------------------------------------
-- Cas de CheckIndex
 DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value)
-- > la prochaine valeur de @@IDENTITY sera new_reseed_value + 1

------------------------------------------------------------------------

Conclusion :


Bon coding

Romelard Fabrice

A voir également

Ajouter un commentaire

Commentaires

Messages postés
196
Date d'inscription
jeudi 15 juillet 2004
Statut
Membre
Dernière intervention
14 avril 2009

Il faudrait tout de même rappeler qu'un TRUNCATE est impossible sur une table référencée par une clé étrangère.
Messages postés
262
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
27 avril 2007

Très clean comme solution, surtout quand on maquette sa base...
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
20
Autre solution (que j'utilisais, mais par ignorance) : un DELETE sur la table, et un CREATE pour la recréer.
Mais le TRUNCATE est quand même beaucoup plus élégant :o)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.