您能否为另一列中的每个值创建一个序列

时间:2019-07-16 22:18:32

标签: sql database postgresql jpa

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

database table

我希望有一个序列,可以将保存在表格中的每个品牌的版本从1递增。目前,在我的服务中,我正在抓取某个品牌的最高版本,将其递增一个,然后将其用于新版本(如果结果返回为空,则使用1。)

但是,每当我删除一个版本并插入一个新版本时,它都会重用刚刚删除的版本,这是不可取的。我是否可以使用某种顺序来注意特定列的值,并且将为特定值递增?就像该品牌是麦当劳一样,它将有自己的序列从1开始,如果品牌是Burker King,那么它将有自己的序列从1开始。

我能想到的唯一替代解决方案是创建一个新表,该表跟踪曾经制作过的所有品牌和版本对(最初,我会选择最高版本并为每个品牌排成一行,版本组合,以获取当前版本下的每个版本),但我想避免制作新表。

1 个答案:

答案 0 :(得分:0)

在MS SQL中,您可以将具有标识密钥的表设置为:

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

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