postgresql – currval尚未定义此会话,如何获取多会话序列?

postgresql – currval尚未定义此会话,如何获取多会话序列?,第1张

概述我的目标是在表中插入新行时,自动插入主键字段. 如何从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 1 我的目标是在表中插入新行时,自动插入主键字段.

如何从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
这可能比你想象的更简单

My objective is to get a primary key fIEld automatically inserted when
inserting new row in the table.

只需设置列的默认值即可:

ALTER table tbl ALTER ColUMN tbl_ID SET DEFAulT nextval('my_seq'::regclass);

或者更简单的是,为主键创建具有serial类型的表,首先是:

CREATE table tbl(  tbl_ID serial PRIMARY KEY,col1 txt  -- more columns);

它创建一个专用序列,并自动设置tbl_ID的默认值.

这样,如果在INSERT中没有提到,tbl_ID将自动从附加的序列中分配下一个值.适用于任何会话,并行与否.

INSERT INTO tbl(col1) VALUES ('foo');

如果你想要新的tbl_ID做一些事情:

INSERT INTO tbl(col1) VALUES ('foo') RETURNING tbl_ID;
总结

以上是内存溢出为你收集整理的postgresql – currval尚未定义此会话,如何获取多会话序列?全部内容,希望文章能够帮你解决postgresql – currval尚未定义此会话,如何获取多会话序列?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1170361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存