跳转至

PostgreSQL

  1. 自增列有哪些实现办法?

https://www.cnblogs.com/wy123/p/13367486.html

  • sequence
  • identity
  • serial

序列 Sequence

文档:https://www.postgresql.org/docs/current/sql-createsequence.html

自增序列,默认从1开始,递增1。基于bigint,八字节整数,从9223372036854775808到9223372036854775807。

create sequence id;
-- 这个last_value是上一个被指派的值
-- 特殊的一点是序列刚创建还没有nextval()过的,last_value是1
select last_value from id;
-- 序列前进到下一个值,并返回该值
-- 注意用单引号括起来序列名字
select nextval('id');
-- 当前session的当前值和上一个值
select currval('id');
select lastval('id');
insert into book values (nextval('id'), '史记');
-- 序列和实际表格内容不匹配的话,手动更新序列
select setval('id', max(id)) FROM book;