如何在 sql server 2005 表中插入带有格式化日期并附加自动递增数值的记录?
例如,如果今天的日期2013-04-09 12:05:44.640
,那么我可以像20130409
使用 convert(varchar, getdate(), 112)
.
但我想插入一条记录,就像2013040900001
接下来的那样2013040900002
,2013040900003
依此类推。
如何在 sql server 2005 表中插入带有格式化日期并附加自动递增数值的记录?
例如,如果今天的日期2013-04-09 12:05:44.640
,那么我可以像20130409
使用 convert(varchar, getdate(), 112)
.
但我想插入一条记录,就像2013040900001
接下来的那样2013040900002
,2013040900003
依此类推。
生成系统范围的自动递增数字的一个很好的解决方案是通过为该任务设计的表格:
CREATE TABLE [AutoInc]
(
[Number] INT IDENTITY (1,1) NOT NULL,
[Col1] CHAR(1) NOT NULL
);
然后在表中插入一个值并立即使用 ROLLBACK 将其删除:
BEGIN TRAN;
INSERT INTO AutoInc VALUES ('A');
ROLLBACK TRAN;
这确保不使用空间(表将始终为空),但会创建数字(因为 IDENTITY 属性生成的值不参与事务)。然后,您可以使用 SCOPE_IDENTITY() 函数获取增量值并将其附加到您的日期:
INSERT INTO yourtable (yourcol) VALUES (convert(varchar, getdate(), 112) + RIGHT('000000000' + CAST(SCOPE_IDENTITY() AS VARCHAR(10)), 10));