我正在尝试在sql中生成自定义自动增量功能。我的自定义自动启动ID应如下所示......
S1501.001
" S"是供应商的首字母。
" 15"是今年的最后2位数。
" 01"是今天的一个月
""将永远在那里
" 001"是我的增量。
计数器将继续如下
S1501.001
S1501.002
S1501.003
S1501.004
首先,我必须找到" S1501。"并在最后找到最高位数的ID。我可以创建一个新的" S1501.005"。我怎么能这样做?
我做过一些事情,但没有工作。
SELECT TOP 1 (SELECT SUBSTRING('S1501.001', 7,3)),*
FROM LG_001_01_SERILOTN
WHERE CODE LIKE SUBSTRING('S1501.001', 1,6)+'%'
ORDER BY (SELECT SUBSTRING('S1501.001', 7,3)) DESC
答案 0 :(得分:2)
最佳解决方案是使用
ID INT IDENTITY(1,1)
列,以使SQL Server处理数值的自动增量所以试试这个:
CREATE TABLE dbo.tblCompany
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
CompanyID AS 'S1501.' + RIGHT('000' + CAST(ID AS VARCHAR(3)), 3) PERSISTED,
.... your other columns here....
)
现在,每次在tblCompany
中插入一行而未指定ID
或CompanyID
的值时:
INSERT INTO dbo.tblCompany(Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
然后SQL Server将自动且安全地增加ID
值,而CompanyID
将包含S1501.001
,S1501.002
等值。 ....等等 - 自动,安全,可靠,无重复。