如何对每个 uuid 的每个插入行增加 1 计数器列

How to increment a Couner column by 1 with each inserted row BUT per each guid

对于笨拙的标题表示歉意,请随时提出改进建议。

我有一个 table Records 并且有一个 UserId 列指的是谁做了证词。还有 Counter 列,它是 identity(1,1) (重要的是要记住它与 Id 是主键的列)。

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

据我所知,处理它的唯一选择是创建一个业务逻辑层,检查用户的最高存款计数器并添加新记录,该记录增加一。

但让它自动工作肯定会很好。类似于 identity(1,1,guid)。可能吗?

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

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

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

The only option to handle it as far I can imagine to create a business logic layer that checks for the highest deposition counter for a user and adds the new record with that increased by one.

是时候学习了。

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

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

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