INSERT a l'id qu'on vient de DELETE

cs_Bassman Messages postés 43 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 24 novembre 2005 - 6 août 2005 à 10:30
cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 - 7 août 2005 à 18:14
Voila j'aimerais savoir sous mysql comment forcé l'insertion dès le
"départ", c'est a dire, par exemple dans votre table utilisateur vous
venez d'en supprimé avec l'id = 2 avec 4 enregistrement dans la
table, mais si vous faite un insert d'un nouvel utilisateur il va le
faire apres le 4 sois d'id 5, et moi j'aimerai en faite qu'il
"comble" les ids non utilisé c'est a dire qu'il face l'enregistrement
en id=2.






, , 1, test@tes.com, bassman, a1b4175aa35180cc0de8e978e8c49b70, NULL, 2005-07-26, 1, 1, ----
, , , 3, azerty, sdfdskjl, kljlkj, NULL, 2005-08-04, 0, 1, ----
, , , 4, opiplm, khjk, lkjlkjop, NULL, 2005-08-07, 0, 0, ----
, , , 5, root@localhost, root, azerty, NULL, 2005-08-04, 0, 0



donc supprimé un élément de la base la l'id = 2 et ensuite un autre
utilisateur s'enregistre et je veu qu'il se mette a l'id = 2 et non pas
a la suite des éléments deja enregistré, cad pas apres 5



car quand on fait un truncate table membre, sois on vide la table il
reprend bien a l'id=1, donc je me suis dis qu'il y avait un moyen de
forcé sois a la suppression sois a l'insertion l'id libre



je sais pas si ca été claire mais merci d'avance.

MiStEr_B@sSm@N

1 réponse

cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
7 août 2005 à 18:14
salut,

Je voulais juste te préciser comment fonctionne l'autoindentation dans
la plupart des bdd. En fait le serveur cherche le maximun de l'id dans
la table et il ajoute 1.

D'ou quand tu supprime l'enregistrement 2, c'est normal que lors d'un
insert l'id soit 6, il est tout aussi normal que lorsque tu efface ta
table en entier l'id soit 1 ( ou 0 ).

Pour faire ce que tu veux je vois que deux solutions, soit tu crées un
trigger qui cherche le premier id non utilisé, cependant cela implique
d'écrire une fonction récursive qui test tout les id jusqu'il y en est
un de libre, et donc cela va prendre bcp de temps sur une grande table,
soit tu créer une table ( id_free ) où tu y mets les id des
enregistrements que tu supprimes, et donc lorsque tu feras un insert tu
iras voir dans cette table si elle n'est pas vide avant de créer un
nouvel id.

En espérant que j'ai été clair.

Bonne continuation.



PS : pourquoi veux tu qu'il n'y est pas de "trou", pour moi c'est faire
simple quand on peut faire compliqué et de plus tu auras des problèmes
avec les orphelins.

N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
0
Rejoignez-nous