Salut salut
Pour mon pti de fin d'année j'ai fait un programme de gestion de client et de leur compte, j'ai mon programme qui me permet de supprimer les client et leur compte (suppression en cascade) MAIS pour l'ajout des client j'ai fait en sorte de prendre le dernier client, de l'incrémenter moi même pour le rebalancer avec la requete d'ajout, le problème c'est que si le client 5 est supprimer il ne sera jamais réutiliser : ptit schéma
Nclient Nom Prenom
1 x x
2 x x
3 x x
Je fait ma requete pour supprimer le client N2 j'obtien
1 x x
3 x x
Mais si je rajout un client j'aurai donc
1 x x
3 x x
4 (new client auto incrémenter par mon prog)
Y a t'il une requete SQL qui pourrait décaler d'un rang ma clé primaire (quand je supprime qu'il passe le 3 en 2 le 4 en 3 etc ....)
Merci !
edit : mes relations
Client(Nclient,Nomcli,Prenomcli,Agecli)
Compte(Ncompte,Solde,#Nclient)
De temps en temps, il y a des gens qui viennent et qui veulent s'amuser avec l'AUTO_INCREMENT.
Il y a moyen de changer la valeur courante de l'auto_increment, mais il n'y a aucun moyen (atuomatique) de faire ce que tu veux faire.
Et pis, si tu y reflechis, c'est debile ce que tu veux : c'est juste un id qui te sert a identifier une entite et a lier d'autres avec celle ci, sa valeur, tu t'en fous.
Tu fais quoi avec toutes les autres tables qui gardent cet id pour savoir a qui ils appartiennent ? Tu les changes aussi ? Et si il y en a 10 million ? Tu va attendre 10min a chaque fois que tu efface un truc dans ta BDD ?
Les choses qui méritent d'être faites méritent d'être mal faites.
T-oday I bake, to-morrow brew,
the next I'll have the young queen's child.
Ha, glad am I that no one knew
that Rumpelstiltskin I am styled.
Alors il faut le faire sur un autre champ qui n'est pas une clef.
Et pourquoi eviter le LIMIT ?
Les choses qui méritent d'être faites méritent d'être mal faites.
T-oday I bake, to-morrow brew,
the next I'll have the young queen's child.
Ha, glad am I that no one knew
that Rumpelstiltskin I am styled.
Ce n'est pas toujours le cas. LIMIT utilise les index parfois.
Les choses qui méritent d'être faites méritent d'être mal faites.
T-oday I bake, to-morrow brew,
the next I'll have the young queen's child.
Ha, glad am I that no one knew
that Rumpelstiltskin I am styled.
Ouaaaaaais, je saaaais, mais c'est toi qui a commence
Les choses qui méritent d'être faites méritent d'être mal faites.
T-oday I bake, to-morrow brew,
the next I'll have the young queen's child.
Ha, glad am I that no one knew
that Rumpelstiltskin I am styled.
En résumé: en pratique on s'en fout de la valeur de l'id. Mais notre collègue il a un problème de "pti" -> c'est une épreuve scolaire... Et comme il s'agit de valider un savoir-faire: soyons heureux que sql ne propose pas de solution technique automatique => il faut coder un algo qui donnera le "bon" id qui servira dans l'insert pour qu'il n'y ait pas de trou dans la liste de valeurs des id. D'un point de vue purement scolaire c'est intéressant. Donc à la question du post deux solutions envisageables:
1) faire une procedure stockée ou 2) coder un algo
changer un id ca ne se fait tout simplement pas
si tu change les id de tes clients ca veux aussi dire qu'il faut mettre a jour toute les clefs etrangère de toutes les tables et comme c'est probablement la données centrale de ton appli il va apparaitre dans toutes les tables...
il est peut probable en plus que les contrainte d'intégrité de ta base te laisse faire de telles choses
un id c'est une donnée technique t'as pas à y toucher... tente tu verras que tu va fligué ta base
les 2 principes de la réussite :
1- Ne jamais révéler tout son savoir.
Absolute Dreams
Zog Zog !
Je ne crois pas qu'il veuille faire cette "sauvagerie" : il veut juste pouvoir réutiliser les valeurs des ids qui ont été précédemment supprimés. Du genre j'avais client n° 1 | 2 | 3, je supprime le n° 2. Si je fais un nouvel insert il se mettra normalement en n° 4 alors que le n° 2 est libre. Est-ce bien ça la problématique ?
exact tompuce ! et oui le pti c'est une épreuve scolaire, et oui cette demande "alacon" vien pas de moi mais d'un de mes profs -_-'
Tu trouveras surement ton bonheur via cette requête sur google non? (pas le temps de vérifier)
dirigeant
Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)
Dis à ton abruti de prof que sur son petit nuage, il peut s'amuser à faire ça, mais qu'on fait pas ça dans la vraie vie !
« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)
« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)
« Lemon a un monde à lui dans sa tête » (Im_a_player)
« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)
« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)
« Lemon vient de me montrer... c'est ENORME !!! » (Seven)
« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)
j'allais dire la même chose mais j'ai eu la flemme
parfois on est amené a faire des exercices idiots pour la pédagogie mais la c'est vraiment donner de tres tres tres mauvaises idées à ses eleves...
les 2 principes de la réussite :
1- Ne jamais révéler tout son savoir.
Absolute Dreams
Zog Zog !