我需要帮助在ASP.net mvc(C#)中将id传入数据库。这里theid是主键,它应该是24-073110-XX
格式,其中XX代表一个应该加1的数值。
我应该如何以这种格式插入ID?
答案 0 :(得分:1)
如果数据的24-073110-
部分总是相同,那么将它存储在数据库中几乎没有意义。鉴于您已经说过XX
组件是一个递增1的数值,我建议您创建与此类似的表:
CREATE TABLE [dbo].[MyTable]
(
MyTableId INT IDENTITY(1,1) NOT NULL,
/*
Other columns go here
*/
)
这样,您可以让数据库担心为主键插入唯一的自动递增值。
答案 1 :(得分:1)
正如Rob所说 - 不要将整个大标识符存储在您的表中 - 只需存储更改的部分 - 连续数字。
如果您确实需要表格中的整个标识符,例如为了显示它,你可以使用计算列:
ALTER TABLE dbo.MyTable
ADD DisplayID AS '24-073110-' + RIGHT('00' + CAST(ID AS VARCHAR(2)), 2) PERSISTED
这样,您的INT IDENTITY将用作INT并始终包含数值,并且它将由SQL Server自动递增。
您的DisplayID
字段将包含以下值:
ID DisplayID
1 24-073110-01
2 24-073110-02
12 24-073110-12
13 24-073110-03
21 24-073110-21
由于它是一个持久字段,它现在是表的一部分,你可以对它进行查询,甚至在其上放一个索引以加快查询速度:
SELECT (fields) FROM dbo.MyTable WHERE DisplayID = '24-073110-59'
更新:
我肯定会不使用DisplayID
作为您的主键 - 这就是ID IDENTITY
列非常适合
在DisplayID
上创建索引与在表中的任何其他列上创建索引没有什么不同,确实:
CREATE NONCLUSTERED INDEX SomeIndex ON dbo.MyTable(DisplayID)