我必须在单表中维护我公司的采购详细信息,有三个采购部门参与采购,他们在那里维护自己的“采购订单 SlNo”....
因此我不能使用自动增量编号,我应该使用类似的东西,
X-001
X-002
all 只属于第一个部门
Y-001
Y-002
都只属于第二部门
Z-001
z-002
都只属于第三部门
任何人都可以建议我并提出最佳做法吗?(使用 C#)。
最好的解决方案是使用
ID INT IDENTITY(1,1)
让 SQL Server 处理数值自动递增的列所以试试这个:
CREATE TABLE dbo.tblCompany
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
CompanyID AS 'X-' + RIGHT('00000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED,
.... your other columns here....
)
现在,每次您在tblCompany
不指定ID
or值的情况下插入一行时CompanyID
:
INSERT INTO dbo.tblCompany(Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
然后 SQL Server 将自动安全地增加您的ID
值,CompanyID
并将包含诸如X-00001
, X-00002
,...... 等值 - 自动、安全、可靠、无重复。
PS:我不知道你从哪里得到X-
,Y-
等等前缀 - 你必须根据你自己的情况(使用更改前缀)调整这个解决方案(使用固定前缀),但基本解决方案保持不变:让SQL Server 处理自动编号(这是唯一可行的方法),然后使用计算的持久列添加额外的内容。