Récupérer la derniere valeur d'un champ id.

Fermé
noviceHTML Messages postés 3 Date d'inscription mardi 31 mai 2011 Statut Membre Dernière intervention 22 juin 2011 - 22 juin 2011 à 11:25
 java4ever - 1 juil. 2011 à 13:55
Bonjour,
Je souhaiterais récupérer la dernière valeur d'un champ id d'une table qui ne possède pas d'auto-increment. Quelqu'un connaitrait il une requête pratique qui permettrait cela ?
Merci d'avance pour vos réponses détaillées.


4 réponses

Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 204
Modifié par Meoran le 22/06/2011 à 11:46
Si le champ est toujours incrémenté et jamais décrémenté, tu peux utiliser la fonction SQL MAX().

Parce que lastval() est fait pour répondre exactement à ta demande, mais ça m'étonnerait que cela marche sur un champ non autoincrement :/
0
noviceHTML Messages postés 3 Date d'inscription mardi 31 mai 2011 Statut Membre Dernière intervention 22 juin 2011
22 juin 2011 à 11:43
J'utilise Wamp server 5
0
Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 204
22 juin 2011 à 11:46
Et alors ? Ca ne change rien...
0
noviceHTML Messages postés 3 Date d'inscription mardi 31 mai 2011 Statut Membre Dernière intervention 22 juin 2011
22 juin 2011 à 12:12
J'en sais rien moi je suis novice, je précise pour vous donner un max d'informations. Plus vous en savez plus il vous est facile de répondre.
0
Bonjour,
Comme tu le dis, plus il y a d'infos, plus on a de chance de trouver, donc :

Si tu as vu que l'ID en question n'est pas auto-incrément, c'est qu'il y a une autre méthode pour garantir qu'il est unique :
ça pourrait être une séquence, mais comme tu utilise Mysql (avec wamp),
il ne peut s'agir d'une vraie sequece comme sous Oracle.

Par contre, il pourrait y avoir une table qui sert à fabriquer des pseudo-séquences : c'est souvent une table qui contient une liste de nom de table avec pour chacune le dernier ID utilisé (parfois le prochain à prendre, mais plus rarement)
Pour le savoir, il faut soit regarder si ta table a des triggers (sur insert) qui contiendrait du code pour récupérer cet id ou le code (php, java ou autre) qui a inséré les lignes dans ta table, si c'est une application qui a créé ces lignes.

La dernière option serait que ce soit toi qui ais créé la table, et dans ce cas tu peux te permettre d'utiliser le Max() à condition de toujours insérer avec MAX() + 1
Mais dans ce cas pourquoi ne pas utiliser l'auto-increment ?
En espérant que cela t'aide
0