我有一个简单的问题,假设我们有一张表:
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/