SQL 添加新记录时递增的服务器计数器列

SQL Server counter column that increments when a new record has been added

我正在开发一个存储过程,需要跟踪每天有 运行 的报告。如果一份报告多次 运行,我需要一个每次报告 运行 时递增的列。我不确定如何在不明确命名要跟踪的每个报告的情况下让它跟踪 ReportID 或 ReportName。使用 SQL Server 2012,我们调用 table ProcessMaster。

Time  ReportID   ReportName  (Increment Column)
----  --------   ----------  ------------------
7:00    2145      Job1               1
7:30    2145      Job1               2
7:30    2146      Another            1
8:00    2145      Job1               3
8:30    2146      Another            2

可以选择完全不包含该列,方法是动态生成排名:

SELECT *, 
  ROW_NUMBER() OVER (PARTITION BY ReportId ORDER BY Time) as IncrementColumn
FROM ProcessMaster

如果您希望存储该字段,您可以选择:

  • 编写触发器
  • 增加你的应用层