首页 > 解决方案 > 您可以为另一列中的每个值制作一个序列吗

问题描述

我有一个看起来像这样的表:

数据库表

我想要一个序列,可以为保存到表中的每个品牌从 1 递增版本。目前在我的服务中,我正在获取一个品牌的最高版本,将其加一,并将其​​用于新版本(如果结果返回为空,则使用 1)。

但是,每当我删除一个版本并插入一个新版本时,它都会重用刚刚删除的版本,这是不可取的。是否有任何我可以使用的序列来关注特定列的值并为特定值增加?就像如果品牌是麦当劳,它会有自己的从 1 开始的序列,如果品牌是 Burker King,它就会有自己的从 1 开始的序列。

我能想出的唯一替代解决方案是创建一个新表来跟踪所有已制作的品牌和版本对(最初我会采用最高版本并为每个品牌和版本组合制作一行当前版本下的每个版本),但我想尽可能避免制作新表。

标签: sqldatabasepostgresqljpa

解决方案


在 MS SQL 中,您可以将具有标识键的表作为:

CREATE TABLE vanities 
(id INT, 
version INT IDENTITY (1,1), 
description VARCHAR) 

因此,每当您从已插入的值中删除记录时,新插入不会采用已删除的标识列值。


推荐阅读