为何PostgreSQL中smallserial与smallinteger存储相同但上限一致?
关于PostgreSQL中smallserial与smallinteger取值范围的疑问解答
- smallserial并非独立原生数据类型,它是PostgreSQL提供的语法糖,底层完全基于
smallinteger类型实现,只是自动绑定了一个自增序列(sequence)来生成连续正整数值。 - 2字节的存储容量决定了
smallinteger是有符号整数,取值范围固定为-32768至32767。smallserial并未改变底层存储结构,只是默认让序列从1开始生成值、不使用负数区间,但这无法突破smallinteger的正数上限——因为存储本质仍是有符号2字节整数,正数部分最大值就是32767。 - 你误以为“只存正数就能提升上限”,是混淆了有符号与无符号整数的逻辑。PostgreSQL未提供无符号2字节整数类型,所以即使仅用正数区间,2字节存储的最大值也只能是32767,无法达到无符号2字节整数的65535。
内容的提问来源于stack exchange,提问作者user22236177
相关产品推荐
相关产品推荐

