postgresql – currval尚未定义此会话,如何获取多会话序列?
发布时间:2020-12-13 16:33:19 所属栏目:百科 来源:网络整理
导读:我的目标是在表中插入新行时,自动插入主键字段. 如何从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
我的目标是在表中插入新行时,自动插入主键字段.
如何从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
这可能比你想象的更简单
只需设置列的默认值即可: ALTER TABLE tbl ALTER COLUMN tbl_id SET DEFAULT nextval('my_seq'::regclass); 或者更简单的是,为主键创建具有 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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |