Sql server 如何在mvc中自定义我的主键值

Sql server 如何在mvc中自定义我的主键值,sql-server,asp.net-mvc,Sql Server,Asp.net Mvc,我想为我的Staff Info数据库自定义主键值。SQL Server将自动生成一个从1、2、3…..开始的StaffID(PK)。。。。。等等 但我不想这样,我可以将其设置为生成ST20001或ST01之类的StaffID(PK),而不是仅生成1,2,3吗?我不明白为什么需要将其存储在表中 CREATE TABLE dbo.Staff ( StaffID int IDENTITY(1,1) PRIMARY KEY, StaffIDForDisplay AS ('ST' + RIGHT(

我想为我的
Staff Info
数据库自定义主键值。SQL Server将自动生成一个从1、2、3…..开始的
StaffID
(PK)。。。。。等等


但我不想这样,我可以将其设置为生成ST20001或ST01之类的
StaffID
(PK),而不是仅生成1,2,3吗?

我不明白为什么需要将其存储在表中

CREATE TABLE dbo.Staff
(
  StaffID int IDENTITY(1,1) PRIMARY KEY,
  StaffIDForDisplay AS ('ST' + RIGHT(REPLICATE('0',9) + CONVERT(varchar(11), StaffID)))
);
GO

INSERT dbo.Staff DEFAULT VALUES;
GO 3

SELECT * FROM dbo.Staff;
结果:

StaffID    StaffIDForDisplay
=======    =================
1          ST0000000001
2          ST0000000002
3          ST0000000003

您可以对视图执行类似操作,或者只需在需要时在客户端添加/删除
ST0000…

我不明白为什么需要将其存储在表中

CREATE TABLE dbo.Staff
(
  StaffID int IDENTITY(1,1) PRIMARY KEY,
  StaffIDForDisplay AS ('ST' + RIGHT(REPLICATE('0',9) + CONVERT(varchar(11), StaffID)))
);
GO

INSERT dbo.Staff DEFAULT VALUES;
GO 3

SELECT * FROM dbo.Staff;
结果:

StaffID    StaffIDForDisplay
=======    =================
1          ST0000000001
2          ST0000000002
3          ST0000000003

您可以对视图执行类似操作,也可以在需要时在客户端简单地添加/删除
ST0000…

只要有一个不是标识列的主键,并自己提供值即可。问题是什么?您能在插入时用代码生成它吗?对系统会用你的特殊配方自动为你做吗?不太可能,但用“like”定义的需求不是很精确。这是个好主意吗?可能不会。也许您所需要的只是一个计算列,它将前缀与基于标识或序列的零填充值连接起来。如果ST是固定前缀,那么为什么需要在每一行中存储它?只需像普通方式一样存储整数,并仅在需要以这种方式显示时使用ST和前导零格式化输出。你可以用一个计算的列、视图等来做这件事,也需要考虑当你命中99999时你所做的事情。只需要一个不是一个实体列的主键,并且自己提供这些值。问题是什么?您能在插入时用代码生成它吗?对系统会用你的特殊配方自动为你做吗?不太可能,但用“like”定义的需求不是很精确。这是个好主意吗?可能不会。也许您所需要的只是一个计算列,它将前缀与基于标识或序列的零填充值连接起来。如果ST是固定前缀,那么为什么需要在每一行中存储它?只需像普通方式一样存储整数,并仅在需要以这种方式显示时使用ST和前导零格式化输出。你可以用一个计算列、视图等来完成这一点,也需要考虑当你命中99999时你所做的事情。