我有一张job_no
的表格会自动增加一年中的最后两位数。
示例:在2014
年中,job_no
将是这样的:140001
,140002
,140003
并且它将保持增量直到明年,这是2015
,它会重置计数,如下所示:150001
,150002
...
碰巧我知道如何将日期与数字合并,但我仍然无法弄清楚如何让它每年重置......我将非常感谢你的帮助,并且很高兴能够清楚地了解解释和实例...
答案 0 :(得分:1)
DECLARE @y INT;
SET @y = YEAR(GETDATE()) % 100; -- or YEAR(@DateOfJob) if you use a variable for that
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
DECLARE @i INT;
SELECT @i = MAX(job_no) FROM dbo.TableName WHERE job_no / 1000 = @y;
SET @i = @y * 1000 + 1 + COALESCE(@i % 1000, 0);
-- if job_no is an IDENTITY column, for some reason:
-- SET IDENTITY_INSERT dbo.TableName ON;
INSERT dbo.TableName(job_no, ...) VALUES(@i, ...);
-- if job_no is an IDENTITY column, for some reason:
-- SET IDENTITY_INSERT dbo.TableName OFF;
COMMIT TRANSACTION;
答案 1 :(得分:0)
您只需设置标识插入并插入一个包含您要使用的新起始值的行,然后将从该值开始插入。
虽然在一个字段中有两个数据项,但它有点违反数据库正常形式。
答案 2 :(得分:0)
将SQL代理作业设置为在12月31日午夜运行并运行以下代码片段:
DBCC CHECKIDENT('table_name', RESEED, (YEAR(GETDATE()) % 100) * 10000)
请注意,此方法存在以下问题: