SQL Server - 创建自定义自增字段
SQL Server - Create a custom auto-increment field
我正在尝试在 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
最好的解决办法是使用
- 一个
ID INT IDENTITY(1,1)
列获取SQL服务器来处理你的数值的自动递增
- 一个计算的、持久的列,用于将该数值转换为您需要的值
所以试试这个:
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 服务器将 自动安全地 增加您的 ID
值,并且 CompanyID
将包含像 S1501.001
这样的值, S1501.002
,......等等——自动、安全、可靠、无重复。
我正在尝试在 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
最好的解决办法是使用
- 一个
ID INT IDENTITY(1,1)
列获取SQL服务器来处理你的数值的自动递增 - 一个计算的、持久的列,用于将该数值转换为您需要的值
所以试试这个:
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 服务器将 自动安全地 增加您的 ID
值,并且 CompanyID
将包含像 S1501.001
这样的值, S1501.002
,......等等——自动、安全、可靠、无重复。