基于另一列的序列列(PostgreSQL)

问题描述 投票:0回答:0

我有

spring-boot-data-jpa
应用程序和这样的
PostgreSQL
表:

id 对象ID 文档名称
bdc8b35b 1 file1_for_obj_1
ea4746ab 2 file1_for_obj_2
cd4f235c 1 file2_for_obj_1
2d7d5af9 1 file3_for_obj_1
e85824021 2 file2_for_obj_2

我需要添加一列

number
,它将作为序列号,并将考虑
object_id
列的值。也就是说,这个想法是对与一个或另一个相关的行进行编号
object_id

所以表格应该是这样的:

id 对象ID 文档名称 数字
bdc8b35b 1 file1_for_obj_1 1
ea4746ab 2 file1_for_obj_2 1
cd4f235c 1 file2_for_obj_1 2
2d7d5af9 1 file3_for_obj_1 3
e85824021 2 file2_for_obj_2 2

我的第一个想法是创建一个可以生成新值的序列。例如,像这样:

CREATE SEQUENCE _document_sequence
    MINVALUE 1
    START WITH 1000
    INCREMENT BY 1

但在这种情况下,它不会考虑

object_id
列的值。也就是说,可能应该用 java 代码生成。此外,我需要进行迁移,以记录现有行的新列
number
的值。但我不知道如何最有效地做到这一点。

postgresql spring-data-jpa sequence
© www.soinside.com 2019 - 2024. All rights reserved.