SQL Server:自动增量char pk

时间:2011-12-05 17:12:45

标签: sql-server char auto-increment

是否可以在表上使用char主键?例如'WC001'然后它将自动递增1,因此pk的下一个记录将是'WC002',依此类推。

有人可以提供我的例子吗?

由于

3 个答案:

答案 0 :(得分:3)

不是直接 - 但你可以有一个正常的INT IDENTITY自动递增数字ID,然后定义一个计算的持久列(SQL Server 2005和更新版本) - 类似于:

CREATE TABLE dbo.YourTable
(ID INT IDENTITY(1,1),
 CharID AS 'WC' + RIGHT('000' + CAST(ID AS VARCHAR(3)), 3) PERSISTED,

 CONSTRAINT PK_YourTable PRIMARY KEY(CharID)
)

将值插入此表将导致ID列为1, 2, 3, 4, 5, .....并且CharID列将自动为WC001,{{1} },WC002等等。

由于它是一个持久计算列,因此值始终是最新的,您甚至可以在其上放置索引(如主键)。

答案 1 :(得分:1)

不容易,但是如果你需要这样的东西,没有什么可以阻止你分解你的密钥的字母和数字部分。将WC部分AKey和数字设为NKey,并自动加入Nkey

如果您愿意,可以将其公开为view

SELECT AKey + CAST(nkey as varchar) as 'Key'
...

实现“自定义”标识永远不会很好,因为有效解决并发问题涉及很多因素。

SQL Server 2012将添加对更复杂的身份字段的支持。

答案 2 :(得分:0)

我的建议是创建另一个名为Id IDENTITY(1,1) INT的列,然后将所需的列作为计算列,其中包含Id和格式化的数字0。