72

如何在将新行插入表时调用 postgresql 序列?

我想做这样的事情:

insert into biz_term(
  biz_term_id, 
  biz_term_name, 
  ) 
values(SELECT nextval(idsequence)',
'temp'
);

我想这样做是因为当我尝试将新记录插入biz_term表中时idsequence,不会直接调用序列。如何调用它?

4

2 回答 2

141

你几乎明白了。你不需要那里的 SELECT :

insert into biz_term(
  biz_term_id, 
  biz_term_name, 
) 
values(
 nextval('idsequence'),
 'temp'
);

您没有将 biz_term_id 指定为serial(或bigserial)自动为您处理的任何原因?

于 2012-08-08T13:01:02.333 回答
1

尽管这是一个有点老的话题,但我想指出一个很好的理由BIGINT,反对BIGSERIAL是如果你正在使用休眠。这是文章: https ://vladmihalcea.com/postgresql-serial-column-hibernate-identity/

正如文章指出的那样,

使用 SEQUENCE 生成器是更好的选择,因为可以在执行 INSERT 语句之前生成标识符

发布答案,因为我还没有资格发表评论:/。如果您觉得不合适,我会提前道歉。

于 2021-03-21T19:50:56.233 回答