创建自动生成ID的最佳做法是什么

时间:2013-10-21 11:12:10

标签: sql c#-4.0

我必须在单表中维护我公司的购买详情,有三个购买部门参与购买,他们维持自己的'采购订单SlNo'....

因此我无法使用自动增量编号,我应该使用像

这样的东西
X-001
X-002

所有只属于第一部门

Y-001
Y-002

所有只属于第二部门

Z-001
z-002

所有只属于第三部门

任何人都可以建议我并提出最佳做法吗? (使用C#)。

1 个答案:

答案 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中插入一行而未指定IDCompanyID的值时:

INSERT INTO dbo.tblCompany(Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)

然后SQL Server将自动且安全地增加ID值,而CompanyID将包含X-00001X-00002等值。 ....等等 - 自动,安全,可靠,无重复。

PS:我不知道从哪里获得X-Y-等前缀 - 您必须根据自己的情况调整此解决方案(使用固定前缀)(更改前缀),但基本解决方案保持不变:让SQL Server处理自动编号(这是唯一可行的方法),然后使用计算的持久列添加额外的东西。