PostgreSQL - 表中的下一个序列值

标签 postgresql

我有一个简单的问题,假设我们有一张表:

 id   A   B
 1   Jon  Doe
 2   Foo  Bar

有没有办法知道下一个 id 的增量,在本例中为 3? 数据库是 PostgreSQL!

非常感谢!

最佳答案

如果你想领取一个ID并返回它,你可以使用nextval() , 它在不插入任何数据的情况下推进序列。

注意,如果是SERIAL列,需要根据表名和列名找到sequence的名称,如下:

Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;

无法保证您会看到这些 ID 按顺序返回(序列按顺序生成它们,但多个 session 可以声明一个 ID 但尚未使用它,或者回滚 INSERT 并且 ID 不会被重复使用)但是可以保证它们是唯一的,这通常是很重要的事情。

如果你经常这样做而不实际使用 ID,你最终会用完 32 位 integer 列的所有可能值(即达到最大可表示整数),但如果你使用只有当您实际插入具有该 ID 的行的可能性很大时,它才应该没问题。

关于PostgreSQL - 表中的下一个序列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232714/

相关文章:

python - Postgresql 启动失败

postgresql - 为 postgresql 存储过程设置隔离级别

hibernate - jpa hibernate @ElementCollection

postgresql - 安装 Postgres 自定义类型 - 无法访问文件 "...": Permission denied

c# - Entity Framework Core,报错Postgres violates foreign key constraint

regex - 只匹配字符串的末尾

java - 如何在Spring boot中禁用扫描@Configuration类

postgresql - 我可以依赖 PostgreSQL 中的 aclexplode() 函数吗?

postgresql - 在 CloudWatch 中正确创建 Postgres RDS 数据库实例 "Upgrade"日志组

sql - 查询以在特定条件下重置以递增计数