Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/07/2005, 10h26   #1
Invité régulier
 
Inscription : décembre 2003
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 17
Points : 9
Points : 9
Par défaut mysql_insert_id version PostgreSQL

Bonjour

En cherchant sur le net une fonction pour remplacer mysql_insert_id pour PostgreSQL, j'ai trouvé cette article : http://www.sitepoint.com/print/site-mysql-postgresql-2
qui donne à la fin de la page cette fonction :
Code :
1
2
3
4
5
6
7
8
 
FUNCTION postg_insert_id($tablename, $fieldname)
{
 global $ouverture;
 $result = pg_exec($ouverture, "SELECT last_value FROM ${tablename}_${fieldname}_seq");
 $seq_array = pg_fetch_row($result, 0);
 RETURN $seq_array[0];
}
Elle marche très bien mais je ne comprend pas comment elle fonctionne...
Ce que je ne comprend pas c'est :
last_value et la syntaxe ${tablename}_${fieldname}_seq

Si qqn pouvait m'éclaircir.

Merci d'avance

melmel
melmel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2005, 14h13   #2
Membre confirmé
 
Inscription : septembre 2003
Messages : 302
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : septembre 2003
Messages : 302
Points : 251
Points : 251
les id comme tu l'entends sous mysql sont en fait des sequences sous postgres qui sont construits de cette façon : nomdelatable_nomduchamp_seq

Ensuite la variable last_value te donne la valeur d'id libre à laquelle tu peux mettre ton nouvel enregistrement. C'est aps très français mais j'espère que tu comprends ce que je veux dire
papy_tergnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2005, 17h43   #3
Invité régulier
 
Inscription : décembre 2003
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 17
Points : 9
Points : 9
C'est pas très clair...
J'ai lu ca, http://dgriessinger.developpez.com/p...sql/sequences/, mais je ne comprend pas très bien ce que tu veux dire par :

Citation:
last_value te donne la valeur d'id libre à laquelle tu peux mettre ton nouvel enregistrement.
Si last_value me donne la valeur d'id libre, il ne devrait rien avoir dans cet id, si ?
Par exemple, les id 1, 2, 3 ont été créés. last_value me retourne 4 ?
Je suis à l'ouest là ou c'est ca ? ^^
Ce que je veux c'est bien l'id attribué à cet enregistrement, soit sa séquence, pas la suivante.
A moins que SELECT soit super fort et qu'il me retourne la valeur juste avant last_value, qui est la bonne, non ?

please help
melmel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2005, 10h39   #4
Membre confirmé
 
Inscription : septembre 2003
Messages : 302
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : septembre 2003
Messages : 302
Points : 251
Points : 251
autant pour moi je me suis trompé : ça te retourne la dernière valeur donc dans ton exemple ça te retourne 3

désolé pour la mauvaise info (j'aurai du vérifier avant)
papy_tergnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2005, 21h38   #5
Invité régulier
 
Inscription : décembre 2003
Messages : 17
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 17
Points : 9
Points : 9
Merci pour ton aide, c'est beaucoup plus clair maintenant

melmel
melmel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h20.


 
 
 
 
Partenaires

Hébergement Web