You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres 15分区表中bigserial列跨分区唯一性是否有保障?

问题解答:Postgres分区表中bigserial列的全局唯一性

核心结论

是的,你这个id列能够保证在所有分区中全局唯一。

具体解释

  1. bigserial的本质:bigserial是Postgres的语法糖,等价于定义bigint类型列,并自动创建一个绑定的序列,插入数据时会自动调用序列的nextval()生成自增值。
  2. 分区表的序列共享逻辑:当在分区主表T中定义bigserial时,Postgres只会为主表创建唯一的一个序列,所有子分区(比如T_2020、T_2021)在插入数据时,都会共用这个主表的序列来生成id值。不会为每个分区单独创建序列,因此不会出现不同分区生成重复id的情况。
  3. 复合主键的影响:虽然表的主键是复合的(id, date),但这并不影响id列本身的全局唯一性——因为所有分区的id都来自同一个序列,天然不会重复,自然也满足复合主键的约束要求。

验证方式

你可以通过以下SQL查询绑定到id列的序列,确认它是主表的共享序列:

SELECT pg_get_serial_sequence('T', 'id');

执行后会返回类似public.t_id_seq的序列名称,这个序列就是所有分区共用的。


内容的提问来源于stack exchange,提问作者user3440012

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:32:06