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

时间:2012-08-08 12:36:30

标签: sql postgresql-9.1

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

我想做这样的事情

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


);

如何做到这一点?我想这样做,因为当我试图在biz_term表中插入新记录时,序列-idsequence没有被直接调用。任何解决方案?

2 个答案:

答案 0 :(得分:85)

你几乎得到了它。你不需要那里的SELECT:

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

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

答案 1 :(得分:1)

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

正如文章指出的那样,

<块引用>

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

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