PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 14/09/2012 09:32:06

Anthony
Membre

problème de sequence

Bonjour
je travaille sur deux machines distinctes (Win7 / Srv2008) ayant la même version de postgresql (9.1).
Sur le srv2008 un select currval me retourne une erreur alors sur le Win7, elle répond correctement.

La requête :
   select currval(pg_get_serial_sequence('fid.account', 'account_id'))

ERROR:  currval of sequence "account_account_id_seq" is not yet defined in this session

********** Erreur **********

ERROR: currval of sequence "account_account_id_seq" is not yet defined in this session
État SQL :55000


Pourtant je pense que ma séquence est bonne :

select * from information_schema.sequences where sequence_schema = 'fid' and sequence_name like '%account_id%'
sequence_catalog ; sequence_schema ; sequence_name               ;data_type
"MAIN"                ; "fid"                      ; "account_account_id_seq" ;"bigint"

Ce comportement est aléatoire.
Si je recrée la séquence à la main, elle va fonctionner.
Mais ce n'est pas la première fois que j'ai cette erreur et je voudrais comprendre la cause.

Merci pour votre aide

Hors ligne

#2 14/09/2012 11:04:24

rjuju
Administrateur

Re : problème de sequence

Bonjour,

vous pouvez utiliser SELECT last_value FROM account_account_id_seq

Hors ligne

#3 14/09/2012 12:23:03

Anthony
Membre

Re : problème de sequence

Oui en effet, cette requête fonctionne correctement sur les deux serveurs.

Mais vous avez une idée de l'echec sur le currval ? un bug de postgresql ?

Hors ligne

#4 14/09/2012 14:10:28

gleu
Administrateur

Re : problème de sequence

Ce n'est pas un bug. Comme l'indique le message d'erreur, currval n'est utilisable qu'après (au moins) un setval car setval va enregistrer la valeur courante, le currval.


Guillaume.

Hors ligne

#5 14/09/2012 15:36:41

Anthony
Membre

Re : problème de sequence

Effectivement cela fonctionne
Merci

Donc si je comprend bien, currval est un process indépendant de ce que l'on trouve en faisant le
SELECT last_value FROM account_account_id_seq

Hors ligne

#6 14/09/2012 16:52:24

gleu
Administrateur

Re : problème de sequence

Oui, complètement.


Guillaume.

Hors ligne

Pied de page des forums