auto_increment / valeur à préciser / et... optimisation

Eléphanteau du PHP | 24 Messages

14 févr. 2006, 09:53

Bonjour,

Voilà, j'ai un champ de ce type:
id INT(11) UNSIGNED NOT NULL auto_increment
Si je ne précise pas ce champ dans un INSERT, aucun problème, cela incrémente id.
Le problème vient du faite que je souhaite dans certaines conditions préciser ce champ; cela fonctionne si id>0 (et bien sûre en évitant l'erreur de doublon, erreur #1062), par contre, si je met 0, hop, ca incrémente de +1 le dernier champ id entregistré, bon, d'un point de vue de structure, c'est logique, mais comment surpasser cela ? la méthode d'UPDATE après enregistrement fonctionne, mais je voudrais effectuer cette méthode avec un seul INSERT, et pas INSERT puis UPDATE.

Voilà.
Merci de vos futurs contribution.
Low.

A Oui, je cherche à optimiser ma table, par exemple
champ id : 1, 2, 3, 4, 6, 8, 9, 10, 15, 16
Est-il possible d'optimiser ce champ ? pour qu'après : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ou bien même utilisé les id manquant comme prochaine enregistrement.

ViPHP
ViPHP | 1024 Messages

14 févr. 2006, 12:09

Franchement, ce genre d' "optimisation" ne sert à rien...

parfois on peut être amené à modifier les id ou à les forcer, notamment lors de migrations de données, mais le reste du temps, c'est une perte d'énergie.

A+

Pascal

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

14 févr. 2006, 14:02

Le compteur auto-incrémental que l'on utilise généralement comme clé primaire d'une table
n'a aucune signification intrinsèque et ne doit pas en avoir.

Il s'agit juste d'un identifiant de ligne, permettant notamment les jointures entre les tables.

Si tu souhaites imposer une valeur significative : "Je veux que mon obet toto porte le numéro 324",
crée un champ spécialement pour cela, totalement indépendant de l'auto-incrément.