sql - 生成每年重置的序列号
问题描述
我想用一些每年重置的序列号更新插入的记录(来自 web 应用程序)。它的格式应为 1/2019、2/2019、1/2020 等。
我提出的第一个解决方案是在插入操作上使用触发器。
CREATE TRIGGER GenerateActivityNumber
ON dbo.Activity
AFTER INSERT
AS
BEGIN
update Activity set Activity.ActivityNumber = CONCAT(NEXT VALUE FOR ActivityCounter, '/', YEAR(GETDATE())) WHERE Activity.id = (select Id from inserted)
END
看起来不错,但除了使用每年运行的作业之外,我看不到任何重置序列的方法。第二个想法很简单,但它不是很安全(重复的风险) - 计算当年的记录并增加值(仍在触发器内)
select MAX(id)+1 from activity where YEAR(CreatedDate) = YEAR(GETDATE())
您知道如何改进上面显示的解决方案吗?或者还有其他更好的解决方案吗?
解决方案
推荐阅读
- leaflet - Ionic OpenStreetMap 与 Leaflet 的集成
- css - css关键帧动画图像循环
- android - 无法弄清楚如何将此字段保存到数据库中
- php - 多个请求同时绕过检查
- c# - .NET 数据层线程安全
- python-3.x - 如何将 Arduino 中的轮询数据捕获到 python 3 中?
- react-rails - React Rails“标识符'Set'未定义”
- c - C 程序 (Visual Studio) 中关于 Malloc 的编译错误(“void*”类型的值不能用于初始化“Item*”类型的实体
- wordpress - 将本地 wordpress 移动到实时服务器,以为我做的一切都是正确的
- python - 隐马尔可夫模型如何生成概率