PostgreSQL自动增量列按另一列值的范围

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

在PostgreSQL中,我们可以将列定义为SERIAL,以使用插入查询自动递增它。

通过确定另一个列值来实现这种自动增量吗?

我将用下面的例子解释我的问题。

在多租户SaaS应用程序中,可能存在我们可能需要按用户帐户增加列(例如,项目表中的item_id列)的情况。

Example:items table

item_id |帐户ID

100 | 1

101 | 1

102 | 1

100 | 2

对不起表的格式错误。我希望你对基本结构有所了解。

在上面的例子中,一旦新项目由新帐户(比如帐户2)创建,item_id序列计数应该从头开始,即100。

如果帐户1中的用户删除item_id 102并创建新项目记录,则item_id应设置为103,依此类推。

我试图找到一个解决方案,但我无法使用谷歌搜索获得指针。所以任何帮助都将受到高度赞赏!

PS:我知道这可以从后端代码处理,但我更想知道数据库是否有解决方案。

postgresql auto-increment
1个回答
0
投票

您无法将SERIAL定义为在其他列上进行分区。但你可以使用ROW_NUMBER()功能。如果您不需要实现该值,您可以编写如下内容:

CREATE VIEW v_item_table
AS
SELECT *, 
 ROW_NUMBER() OVER(PARTITION BY item_id ORDER BY some_timestamp_col) AS account_id
FROM item_table;
© www.soinside.com 2019 - 2024. All rights reserved.