Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL-如何在行号之后生成自动递增函数?_Postgresql - Fatal编程技术网

PostgreSQL-如何在行号之后生成自动递增函数?

PostgreSQL-如何在行号之后生成自动递增函数?,postgresql,Postgresql,我很难找到一个选项来保持列号/ID后面的自动递增函数,而不需要整个复杂的过程。是否有像serial/identity这样的数据类型可以跟踪列ID,但在删除它时也会跟踪它? .一个序列。创建一个序列,并在每次需要下一个值时将其与nextval一起使用。即使我删除了值,它是否仍然有效?假设我最初有40个值,然后删除了第22个值,之后不是仍然有41个值吗?为什么需要保持这种方式?通常,行id与任何数据库的序列号都不匹配。数据库不会以特定的顺序获取内容(除非您指定),这在高并发场景中更为明显。此外,没有

我很难找到一个选项来保持列号/ID后面的自动递增函数,而不需要整个复杂的过程。是否有像serial/identity这样的数据类型可以跟踪列ID,但在删除它时也会跟踪它?
.

一个序列。创建一个序列,并在每次需要下一个值时将其与nextval一起使用。即使我删除了值,它是否仍然有效?假设我最初有40个值,然后删除了第22个值,之后不是仍然有41个值吗?为什么需要保持这种方式?通常,行id与任何数据库的序列号都不匹配。数据库不会以特定的顺序获取内容(除非您指定),这在高并发场景中更为明显。此外,没有可用的标识/序列设置将跟踪您请求的删除ID,因为它们只保留下一个可用值。在您的场景中,在使用新ID之前,您需要检查哪些ID被删除并填充。因为在我的场景中,ID填充得非常快,每次调用它都会让人感到痛苦。这是我最初的问题,如果没有一个简单的解决方案,那就好了,谢谢。抱歉,如果最后的评论过于直截了当,只是试图详细说明这种情况的情况。主要问题是:如果你删除中间的东西,这是一个额外的任务来跟踪未使用的ID,将工作添加到工作流程中。因为向后移动序列将对该值起作用,然后,它的下一个值应移动到下一个空值。在一个有数亿的表中,它本身可能会占用大量的DB I/O。这就是为什么我要问的原因,它不是微不足道的,也许您可以用另一种方式解决一些功能需求