Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SQL SERVER - COMMENT REINITIALISER UN CHAMP ID AUTOINCREMENTE


Information sur la source

Catégorie :Trucs & Astuces Classé sous : identity, autoincrément, id Niveau : Initié Date de création : 28/04/2006 Vu : 5 696

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


Description

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

  • ------------------------------------------------------------------------
  • -- 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
  • ------------------------------------------------------------------------
------------------------------------------------------------------------
-- 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
 

Commentaires et avis

signaler à un administrateur
Commentaire de econs le 12/05/2006 15:47:28 administrateur CS

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)

signaler à un administrateur
Commentaire de asecher le 11/09/2006 21:10:41

Très clean comme solution, surtout quand on maquette sa base...

signaler à un administrateur
Commentaire de FENETRES le 13/11/2007 15:08:40

Il faudrait tout de même rappeler qu'un TRUNCATE est impossible sur une table référencée par une clé étrangère.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

@@identity apres Insertion [ par issoux ] Bonjour,  J'utilise dans une stored procedure trois  Insert . J'ai besoin de l'id du premier insert pour le mettre dans le deuxieme Insert . Mes id so Pointer sur l'enregistrement Max(id) [ par gatita_dev ] Bonjour,je veux faire une requête qui me renvoie la ligne qui a le id maximum.voilà ce que j'ai fait"SELECT *FROM users where id=max("id");mais il me PROBLEME REQUETE SELECT [ par brute ] Bonjour,J'ai un probleme de REQUETE SELECT avec ORacle  .J4ai une table avec 4 colonnes, ID, FACE, PARAM, VALEURl'ID prend les valeurs (1 ou 2 ou 3 ou probleme stored dynamique [ par marc_dd ] bonjour à tousVoilà je voudrais faire une stored dynamique mais je n' arrive pas à retrouver mes paramètre  le code sera plus parlant voilà le code :A Besoin d'aide pour 2 petites requetes SQL [ par nacnac707 ] Bonjour, Je cherche 2 requete pour mon site, je suis débutant et j'ai un peu de mal à avancer :-(Merci à ceux qui pourront m'aider !J'ai 3 tables <p Récursivité avec MySQL [ par Flux__ ] Bonjour,J'ai créer la table suivante :##==============================================================#### Table : EMPLOYE                             Gestion d'emploi du temps [ par nadias ] Bonsoir a tous,Je dois créer une petite base de données qui va me permettre de gérer l'emploi du temps de differentes classes sachant que j'ai au maxi traduction d'une requtte sql [ par 071714016 ] j'ai un problème avec une version SQL 4.0 il ne reconnait pas "not in (select" "select * from chat where recepteur='$idlogin' and etat_r!=1 and emeteu Intégrité référentielle [ par yahia_bens ] Comment implémenter l'intégrité référentielle à l'aide d'un déclencheur quand on a une relation unaire(pere-&gt;fils), pour éviter les cycles.Soit la Select paginé [ par thiosyiasar ] Bonjour a tous,Pour une page aspx, je voudrais faire un select paginé du genre : SELECT TOP (@nb_ligne) * FROM newsletter WHERE nlt_id in(  SELECT nlt


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.