Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & PostgreSQL
PHP & PostgreSQL Forum d'entraide sur PostgreSQL avec PHP. Avant de poster -> FAQ PostgreSQL, Cours PostgreSQL. Pour les questions concernant le moteur PostgreSQL plutôt que les fonctions PHP, merci d'utiliser le forum 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 25/02/2011, 09h42   #1
Invité régulier
 
Inscription : octobre 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 16
Points : 5
Points : 5
Par défaut Récupérer un champ après un INSERT

Bonjour à tous,
je vous expose mon problème :
Citation:
J'ai une table qui contient plusieurs champs dont un du type SERIAL. Je fait un INSERT dans cette table puis directement un second INSERT dans une autre table qui doit utiliser la valeur de mon SERIAL.
Je voudrais donc récupérer ce SERIAL inséré dans mon premier INSERT.
cas 1 : utiliser un lastInsertId() ; "2 clients font un INSERT simultanément et hop j'ai perdu un sérial".
cas 2 : faire un SELECT entre les 2 INSERT pour le récupérer ; "INSERT SELECT INSERT trop lourd à mon goût".
Je voudrais donc savoir si il existe une autre manière pour pallier à mon problème.

Merci d'avance, désolé si ce n'est pas très clair.

PS : j'utilise les PDO.
dgedge03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 14h39   #2
Membre du Club
 
Inscription : juin 2004
Messages : 69
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : juin 2004
Messages : 69
Points : 43
Points : 43
Il faut faire un
Code :
INSERT INTO la_table() VALUES() RETURNING mon_id
tu fetch ton result comme pour un select normal et tu récupère ainsi ton serial
djaih est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 18h26   #3
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
/!\ pas essayé, ça ne marche peut-être pas.
En lisant rapidement le manuel et en essayant de le rapprocher de ton problème, je pense que ça peut marcher.

Code :
1
2
3
4
5
$sth = $dbh->prepare("INSERT ... INTO ..."); // on prepare un PDOStatement en insert
$sth->execute(); // on l'execute
$result = $sth->fetch(PDO::FETCH_ASSOC); // on récupère la ligne insérée sous forme de tableau associatif
$sth2 = $dbh->prepare("INSERT ... INTO ... WHERE ... ".$result['serialcolumn']); // on prépare la 2e requête avec la valeur du 1er insert
$sth->execute(); //on exécute.
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h52.


 
 
 
 
Partenaires

Hébergement Web