如何在将新行插入表时调用 postgresql 序列?
我想做这样的事情:
insert into biz_term(
biz_term_id,
biz_term_name,
)
values(SELECT nextval(idsequence)',
'temp'
);
我想这样做是因为当我尝试将新记录插入biz_term
表中时idsequence
,不会直接调用序列。如何调用它?
如何在将新行插入表时调用 postgresql 序列?
我想做这样的事情:
insert into biz_term(
biz_term_id,
biz_term_name,
)
values(SELECT nextval(idsequence)',
'temp'
);
我想这样做是因为当我尝试将新记录插入biz_term
表中时idsequence
,不会直接调用序列。如何调用它?
你几乎明白了。你不需要那里的 SELECT :
insert into biz_term(
biz_term_id,
biz_term_name,
)
values(
nextval('idsequence'),
'temp'
);
您没有将 biz_term_id 指定为serial
(或bigserial
)自动为您处理的任何原因?
尽管这是一个有点老的话题,但我想指出一个很好的理由BIGINT
,反对BIGSERIAL
是如果你正在使用休眠。这是文章:
https ://vladmihalcea.com/postgresql-serial-column-hibernate-identity/
正如文章指出的那样,
使用 SEQUENCE 生成器是更好的选择,因为可以在执行 INSERT 语句之前生成标识符
发布答案,因为我还没有资格发表评论:/。如果您觉得不合适,我会提前道歉。