【发布时间】:2017-05-11 05:45:06
【问题描述】:
我正在使用 SQL Server,需要保留一个参考租户 ID 的帐号。
我不能使用自动增量 ID,因为它是按顺序递增的,并且在客户端应用程序中有间隙。
我不能使用计算列作为聚合函数,例如 Max 是不允许的
最好的方法是什么?
【问题讨论】:
-
使用
ROW_NUMBER() OVER (PARTITION BY TenantID ORDER BY ID ASC) -
@M.Ali 这是用于选择查询或视图的,对吗?我想将该列添加到表格中。
-
好奇你为什么不能使用 Max?当您插入记录时,PaymentId = (SELECT Max(PaymentId) + 1 FROM Table WHERE TenantId = @tenantId)。另外,作为一个小建议,如果 PaymentId 没有加入另一个表,我会简单地将其称为 PaymentNumber(Id 表示另一个表的主键)。
-
@BlackjacketMack +1 用于命名建议。您是否建议使用触发器?我试图将其添加为计算列..
-
触发器可以工作,但我倾向于避开触发器,因为它们难以维护(保持源代码控制、识别等)。但是后触发肯定会像事务更新一样工作(在插入记录后立即运行)。
标签: sql-server triggers auto-increment calculated-columns