|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Inscription : juillet 2007 Messages : 246 ![]() |
Bonjour,
Un nom de topic étrange pour un besoin qui ne l'est pas moins ^^ (dur dur de trouver des bon mot clef sur google ....) ![]() Alors voilà, j'aimerais (à la création de ma table) créer un champ auto incrémenté (bon jusque là c'est tout con). Le probleme c'est que je voudrais que chaque nouvel enregistrement prenne l'id 1 et donc que les autres id soient tous incrémenté. |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : juillet 2007 Messages : 179 ![]() |
tu as essayé de faire un update de tous les enregistrements en mettant id = id+1 et ensuite d'insérer l'id 1
pour ça il faudrait pas d'auto incrément |
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() Inscription : janvier 2003 Messages : 491 ![]() |
La technique proposée fonctionnera avec un trigger !
Par curiosité, pourquoi utiliser un auto-increment inversé ?
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant." |
|
|
00
|
|
|
#4 | |
|
Membre actif
![]() Inscription : juillet 2007 Messages : 179 ![]() |
Citation:
|
|
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() Inscription : janvier 2003 Messages : 491 ![]() |
Il me semble qu'un trigger sur un évenement before insert évitera une bidouille puisque le but est de mettre à jour des champs en fonction du paramétrage de ton trigger. Dans cet exemple, avant chaque insertion dans la table, il faudra incrémenter toutes les colonnes.
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant." |
|
|
00
|
|
|
#6 | ||
|
Membre actif
![]() Inscription : juillet 2007 Messages : 246 ![]() |
Citation:
En fait j'esperais qu'il y ait cette fonctionalité via phpmyadmin Citation:
![]() En fait je créé des statistiques assez souvent (plusieurs fois par jour) et j'aimerais les stoquer. Mais il me faut recuperer la derniere statistique enregistrée, ça aurait été facile comme ça, le dernier enregistrement aurait toujoours été celui à l'id 1. PS : chéquoi un trigger ? |
||
|
|
00
|
|
|
#7 | |
|
Membre actif
![]() Inscription : juillet 2007 Messages : 179 ![]() |
Citation:
sinon je suis pour le trigger qui sera sans doute plus performant que la bidouille |
|
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : juillet 2007 Messages : 246 ![]() |
Hum visiblement les trigger ne sont implémentés qu'à partir de MySQL 5.0.
Vu que le server prod ne posser que la version 3.23 je pense que je vais opter pour la bidouille ... EDIT : merci pour le lien sebdu |
|
|
00
|
|
|
#10 | |
|
Membre expérimenté
![]() Étudiant Inscription : mars 2006 Messages : 396 ![]() |
Citation:
Tu fais cela pour gagner du temps lors de l'accès aux données (tu ne récupère que le dernier enregistrement). Cependant, les insertions de données seront plus lentes (UPDATE avant INSERT). Je suppose que tu insères des données plus souvent que tu n'y accèdes. Dans ce cas, ne perds-tu pas plus de temps à l'insertion des données que tu n'en gagnes lors de l'accès aux données ? |
|
|
|
00
|
|
|
#11 |
|
Membre actif
![]() Inscription : juillet 2007 Messages : 246 ![]() |
Non j'y accede plus souvent que je ne met à jour.
Je lis environ 20 fois par jour et j'écris 3 à 4 fois par jour. |
|
|
00
|
|
|
#12 | ||
|
Membre éprouvé
![]() Inscription : janvier 2003 Messages : 491 ![]() |
Si tu veux récupérer le dernier enregistrement de ta base, je ne te conseille pas un auto-increment inversé et ceci pour les mêmes raisons que celles exposées par jeremya.
Par contre une requette de ce style devrait convenir et ceci avec des tables de 100k enregistrements (pense à placer un index sur ton id Code :
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant." |
||
|
|
00
|
|
|
#13 | ||
|
Membre actif
![]() Inscription : juillet 2007 Messages : 246 ![]() |
Je savais même pas qu'on pouvait mettre une subquery dans la clause from
J'avais pas pensé à la fonction MAX c'est vrai .... Je pense que je vais faire ça : Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre éprouvé
![]() Inscription : janvier 2003 Messages : 491 ![]() |
Même si le sujet est considéré comme résolue, je tiens à préciser que l'exécution d'une requette est plus rapide si tu mets ton select dans ton from et non dans ton where.
De plus ce type de sous-requette ne doit pas être gérée avec ta version de MySQL.
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant." |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com