PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

recuperer le resultat d'un INSERT

Technique - général | recuperer le resultat d'un INSERT

Par rafafaf le 11/08/2008 - 11:21

Salut Ă  tous, je m'en viens solliciter votre aide !

Voilà, une tite question, j'espère assez simple, mais qui me pose quelques soucis, je vous expose le sujet :
Une base de données contient (entre autres) 2 tables Membre et Objet. L'idée de base, c'est qu'un membre possède des objets (subtil, n'est-ce pas :D ) La clé de chacune de ces 2 tables est un identifiant, dans le cas de la table Objet c'est un type "serial" (donc un entier à incrémentation automatique). Les cardinalités sont 0,n de chaque côté, donc je crée une table intermédiaire "possède" dont le clé est un ensemble id_membre + id_objet .

Via une interface web que je suis en train de créer (c'est dans le cadre d'un stage de fin d'année, je précise, sait-on jamais....), je veux permettre à un membre d'ajouter un objet, via un simple formulaire dans lequel il remplit les caractéristiques de l'objet. Une fois les infos rentrées, un peu de PHP, pg_connect tout ça, requete insert dans la table Objet. Donc, dans cette requete insert, je ne spécifie pas l'identifiant (puisque incrémenté), du coup ça donne un truc dans ce genre là :
INSERT INTO objet(Nom,Description, URL) VALUES ('truc', 'un super truc', 'www.truc.com');
quand la structure de la table Objet est Objet(id serial, nom varchar, description varchar, url varchar)

Le souci, c'est qu'en suite je voudrai ajouter automatiquement le couple id_membre_connecté + id_objet_qu'on_vient-dinserer dans la table "possède", et là je bloque... L'id du membre, pas de souci, elle est stockée dans un cookie, mais recupérer l'id de l'objet qu'on vient d'insérer... Erf :/

Bref, je cale pas mal là, et j'ai du mal à faire des recherches efficaces sur le sujet (dur de compacter ça dans quelques mots...). Du coup, si quelqu'un pouvait éclairer ma lanterne, que ce soit via une solution toute prête ou un lien, ça m'aiderait vraiment ! (bon, je me dis que peut-être, via des triggers et/ou des transactions... Mais voilà, mon raisonnement est bloqué là !)

Merci beaucoup Ă  tous !
Raphael

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Bonjour, tu peux utiliser

luddic/ = 12 Août, 2008 - 14:49

Bonjour,

tu peux utiliser RETURNING dans ta requĂŞte d'INSERT:

INSERT INTO objet(Nom,Description, URL) VALUES ('truc', 'un super truc', 'www.truc.com') RETURNING id_objet;

http://docs.postgresqlfr.org/8.3/sql-insert.html

Ce n'est disponible qu'Ă  partir de la 8.2.

Sinon il faut récupérer le numéro de séquence associé à id_objet, après ton insertion, ou bien avant ton insertion et dans ce cas là changer l'INSERT en:

INSERT INTO objet(id_objet, Nom,Description, URL) VALUES ($id_objet, 'truc', 'un super truc', 'www.truc.com');

Ludo


Merci beaucoup, je vais regar

rafafaf/ = 13 Août, 2008 - 11:48

Merci beaucoup, je vais regarder ça !


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.