我必须在单表中维护我公司的购买详情,有三个购买部门参与购买,他们维持自己的'采购订单SlNo'....
因此我无法使用自动增量编号,我应该使用像
这样的东西X-001
X-002
所有只属于第一部门
Y-001
Y-002
所有只属于第二部门
Z-001
z-002
所有只属于第三部门
任何人都可以建议我并提出最佳做法吗? (使用C#)。
答案 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 'X-' + RIGHT('00000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED,
.... your other columns here....
)
现在,每次在tblCompany
中插入一行而未指定ID
或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处理自动编号(这是唯一可行的方法),然后使用计算的持久列添加额外的东西。