是否可以在表上使用char主键?例如'WC001'然后它将自动递增1,因此pk的下一个记录将是'WC002',依此类推。
有人可以提供我的例子吗?
由于
答案 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。