-1

我必须在单表中维护我公司的采购详细信息,有三个采购部门参与采购,他们在那里维护自己的“采购订单 SlNo”....

因此我不能使用自动增量编号,我应该使用类似的东西,

X-001
X-002

all 只属于第一个部门

Y-001
Y-002

都只属于第二部门

Z-001
z-002

都只属于第三部门

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

4

1 回答 1

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不指定IDor值的情况下插入一行时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 处理自动编号(这是唯一可行的方法),然后使用计算的持久列添加额外的内容。

于 2013-10-21T11:20:26.717 回答