- 此问题在此处已有答案**:
PostgreSQL gapless sequences(1个答案)
九年前就关门了。
如果在SQL Server中,我们有一个自动递增的表,有10行,最后一行是id = 10
,当你删除最后一行时,你插入的下一行也会得到id = 10
,对吗?
但是在Postgres中,使用bigserial
作为PK,当我删除具有最大id
的行,并插入一个新行时,它会不断增加越来越多的pk编号。
是这样吗?
PostgreSQL gapless sequences(1个答案)
九年前就关门了。
如果在SQL Server中,我们有一个自动递增的表,有10行,最后一行是id = 10
,当你删除最后一行时,你插入的下一行也会得到id = 10
,对吗?
但是在Postgres中,使用bigserial
作为PK,当我删除具有最大id
的行,并插入一个新行时,它会不断增加越来越多的pk编号。
是这样吗?
1条答案
按热度按时间3pmvbmvn1#
是的。
bigserial
和serial
只是为了方便从连接序列创建默认设置为nextval()
的bigint
/integer
列。底层的
SEQUENCE
永远不会减少,序列号永远不会重用(没有手动干预)。Read the manual about sequences.为了安全地同时使用,需要这样做。
在Postgres 10或更高版本中,请考虑
IDENTITY
列。