Choix de valeur par défault n+1

Billybobbonnet Messages postés 148 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 novembre 2013 - 15 nov. 2007 à 12:48
pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 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" :)

Merci!

2 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
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.

Bon courage.
0
pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 5
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é...;

Pat

 Don't Worry , Be Happy
0
Rejoignez-nous