salut tout le monde je viens de faire une recherche sur le forum mais j'aurais quand même besoin de quelques explications

je développe un programme java qui utilise ibatis pour dialoguer avec une base postgresql 8.2

dans une transaction j'aimerais pouvoir insérer une entrée dans une table, récupérer l'id auto-généré de cette entrée et l'utiliser dans plusieurs requête par la suite

ma recherche m'a amené à considérer 2 solutions :
1) l'utilisation de RETURNING id à la fin de la requête INSERT
2) l'utilisation de SELECT currval() après exécution de la requête INSERT

la première solution me retourne null et la seconde également

la personne qui a développé la base de données a déclaré l'id de la table dans laquelle je veux faire une insertion comme un entier qui prend comme valeur par défaut la valeur suivante d'une séquence

cette séquence sert en fait de clé primaire à l'ensemble des tables de la base

en gros si je veux insérer une entrée dans la table user et que je veux récupérer id_user :

1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
INSERT INTO user (id_user,...) VALUES (DEFAULT,...) RETURNING id_user
me retourne null

2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
INSERT INTO user (id_user,...) VALUES (DEFAULT,...)
SELECT currval(pg_get_serial_sequence('user','id_user'))
me retourne null

3)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
INSERT INTO user (id_user,...) VALUES (DEFAULT,...)
SELECT currval('public.id')
me retourne un entier

je voudrais savoir si cet entier correspond bien à l'id_user de l'entrée que je viens d'insérer ou alors s'il correspond à un id_xxx de la dernière entrée réalisée dans une table de la base

si vous avez une méthode robuste à me proposer je suis preneur

merci

[edit]

petite précision, la 1ère méthode fonctionne directement dans la console postgres mais pas en passant par ibatis...