首页 > 解决方案 > POSTGRESQL 中的 SERIAL 伪类型?

问题描述

目前我正在为我的项目使用串行数据类型。我想知道以下详细信息以将以前创建的 SEQUENCE 数据类型更改为 SERAIL 数据类型。

  1. 从哪个版本开始,POSTGRESQL 支持 SERAIL DATATYPE,如果我将 id 更改为 SERAIL,它也不会影响我未来的代码。
  2. 串行的最大大小及其影响是多少?
  3. ALTER SEQUENCE 会影响序列号吗?
  4. 未来 serail 数据类型有什么缺点吗?
  5. 如何创建无间隙序列?

标签: postgresql

解决方案


所有答案都可以在手册中找到

  1. 串行回到Postgres 7.2

  2. 这是一个 bigint,最大尺寸记录在手册中。另请参阅文档中的此注释CREATE SEQUENCE

序列基于 bigint 算法,因此范围不能超过一个八字节整数的范围(-9223372036854775808 到 9223372036854775807)。

  1. 明显地。如手册中所述,该命令可以设置最小值或使用新值重新启动,并操纵许多其他影响数字生成的属性。

  2. 应该改用身份列

  3. 不可能——这不是序列的目的。参见例如此处了解无间隙数字生成器的可能实现。


推荐阅读