currval n'a pas encore été définie de cette session, comment faire du multi-session séquences?

Mon objectif est d'obtenir un champ de clé primaire inséré automatiquement lors de l'insertion d'une nouvelle ligne dans la table.

Comment faire pour obtenir une séquence allant de la session à l'autre dans PostgreSQL?

 doubleemploi@hanbei:/home/yves$ psql -d test
 Mot de passe : 
 psql (8.4.13)
 Saisissez « help » pour l''aide.

 test=> create sequence test001 start 10;
 CREATE SEQUENCE
 test=> select currval('test001');
 ERREUR:  la valeur courante (currval) de la séquence « test00 » n''est pas encore définie dans cette session
 --- current value not yet defined this session (???)
 test=> select setval('test001', 10);
 setval 
 --------
      10
 (1 ligne)

 test=> select currval('test00');
  currval 
 ---------
       10
 (1 ligne)

 test=> \q
 test@hanbei:/home/yves$ psql -d test
 Mot de passe : 
 psql (8.4.13)
 Saisissez « help » pour l''aide.

 test=> select currval('test001');
 ERREUR:  la valeur courante (currval) de la séquence « test00 » n''est pas encore définie dans cette session
  • Le but de la séquence est celle de l'session locale. Vous ne pouvez pas "la main" le currval au cours d'une autre session. Pourquoi croyez-vous besoin? Pourquoi ne pas tout faire en une seule opération?
  • parce que j'ai deux session s'est ouverte en même temps : un administrateur de l'un et de production. Donc je dois avoir deux sessions distinctes.
  • pourquoi ne pas créer une séquence unique, et puis il suffit de le partager entre les deux sessions? Ils sont obtenir des identifiants uniques, le travail est accompli.
InformationsquelleAutor MUY Belgium | 2012-09-18