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

[Fermé]
Signaler
Messages postés
3
Date d'inscription
mardi 31 mai 2011
Statut
Membre
Dernière intervention
22 juin 2011
-
 java4ever -
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

Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
192
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 :/
Messages postés
3
Date d'inscription
mardi 31 mai 2011
Statut
Membre
Dernière intervention
22 juin 2011

J'utilise Wamp server 5
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
192
Et alors ? Ca ne change rien...
Messages postés
3
Date d'inscription
mardi 31 mai 2011
Statut
Membre
Dernière intervention
22 juin 2011

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.
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