Billybobbonnet
Messages postés148Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 9 novembre 2013
-
15 nov. 2007 à 12:48
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 2010
-
15 nov. 2007 à 14:13
Bonjour à tous!
Premier message sur ce forum et je vous salue tous à cette occasion.
J'ai une BDD mySQL dans laquelle j'ai une table qui répertorie des groupes d'utilisateurs. Chaque groupe a un id numérique. J'avais mis cet id en auto_increment mais à force de test, je me retrouve avec des liste d'id à trous (1,2,3,17,18,25...) quand je regarde ma table.
Je sais qu'auto-incrément n'était pas ce qu'il me fallait car je veux avoir mes id à la suite et si j'en supprime un, je veux qu'il puisse être réattribué. J'en viens donc à ma question:
Est possible de spécifier dans la structure de ma table que par défaut, id = "le plus grand des id" +1 ? Et si oui comment je dois m'y prendre, si non, comment m'y prendre autrement.
Ma question paraît peut-être évidente à certains mais je débute et je passe à côté de plein de choses en SQL, c'est pour ça que je vous demande ce qu'il serait possible de faire, avant de monter une solution type "usine à gaz" :)
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 15 nov. 2007 à 13:33
Salut,
Il est préférable d'utiliser un autoincrement sur la clé primaire de ta table.
Je ne vois pas en quoi le problème des identifiants à trous te pose problème.
Poussons-plus loin ton idée.
Si ma table comprends 10 enregistrements de 1 à 10
Je supprime le 2 deuxieme, pour ne pas avoir de trous ta focntion d'inserion devrait inserer à la place du deuxieme enregistrement et non au 11 (max+1) sinon tu auras encore des trous.
De plus si un jour, quelq'un de dis l'enregistrement 2, est mauvais.
Qu'il est detruit
Et qu'un nouveau a pris sa place, tu corrigeras le mauvais enregistrement ou tu ne comprendras pas sa remarque.
Donc la meilleure solution, est de laisser les autoincréments, et de laisser le sgbd faire.
Sinon, trouve moi un cas d'utilisation qui oblige à avoir une collection non trouées.
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 20105 15 nov. 2007 à 14:13
salut
je suis d'accord avec nhervagault si ton souci de ne pas avoir de trou est lié à une notion de tri ou autre, tu n'as qu'à avoir un champ dans lequel tu spécifie un n° d'ordre.... et tu laisses la Primary Key en auto incrément...
puis tu gères le champ "Num Ordre" comme si c'était ta clé...;