Vous n'êtes pas identifié(e).
Pages : 1
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
Bonjour,
vous pouvez utiliser SELECT last_value FROM account_account_id_seq
Julien.
https://rjuju.github.io/
En ligne
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
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
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
Oui, complètement.
Guillaume.
Hors ligne
Pages : 1