我必须根据相关用户创建序列号。喜欢:
╔════════════╦═════════════╦═══════════════════╗
║ Row Id ║ User Id ║ Sequence Number ║
╠════════════╬═════════════╬═══════════════════╣
║ 1 ║ 1 ║ 1 ║
║ 2 ║ 1 ║ 2 ║
║ 3 ║ 2 ║ 1 ║
║ 4 ║ 2 ║ 2 ║
║ 5 ║ 3 ║ 1 ║
║ 6 ║ 1 ║ 3 ║
╚════════════╩═════════════╩═══════════════════╝
我有一些先决条件:
- 每个序列号应该在 1 到 9999 之间。在 9999 之后,它应该跳到 1 并从那里继续。(序列的 CYCLE 属性)
- 应根据用户 ID 生成序列号。每个 UserId 都应该有自己的序列。
- 序列号应该是连续的。这样对于用户 ID 5:序列# 123 后面应该跟着 124,不会发生数字的跳跃或重用。
所以使用序列对我来说看起来很合适。但我未能将用户 ID 区别添加到序列中。
CREATE SEQUENCE [dbo].[seq_SequenceNumber]
AS [smallint]
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 9999
CYCLE
NO CACHE
如何将 UserId 分区添加到此序列?