如何在每个guid的每个插入行BUT中将Couner列增加1

时间:2016-01-17 19:15:25

标签: sql sql-server identity

对于笨拙的标题道歉,可以随意提出改进。

我有一个表记录,并且有一个 UserId 列,指的是谁进行了沉积。还有计数器列,它是标识(1,1)(请记住,它与 Id 列不同,这一点很重要是主键。)

当我们开始从不同的账户存款时问题变得明显,因为在此之前,用户可以要求记录号码123到127,获得5个金额,但现在,他们的选择可能是123,125,126甚至更糟 - 没有所有

处理它的唯一选择,我可以想象创建一个业务逻辑层,检查用户的最高沉积计数器,并将新记录添加一个增加。

但是让它自动运行肯定会很好。像身份(1,1,guid)之类的东西。有可能吗?

2 个答案:

答案 0 :(得分:1)

要维护这样一个列,您需要一个触发器。

您可以考虑在查询表时计算值:

select r.*, row_number() over (partition by guid order by id) as seqnum
from records r;

答案 1 :(得分:1)

  

我能想象创建业务的唯一选择   逻辑层,为用户检查最高沉积计数器   并将新记录添加一个。

学习的时间。

  • 将最后给定的号码添加到帐户表中。
  • 使用触发器在SQL Server的插入事件中分配更高的数字。

成品。这显然假设您的关系数据库以关系方式使用,因此记录与用户表相关,而不仅仅是持有用户ID(这将是一个糟糕的设计)。

如果没有,您还可以通过所述触发器维护所有已见GUID的表格。