以24-073110-XX格式将数据插入表中的问题????

时间:2010-08-08 10:40:58

标签: c# ado.net

我需要帮助在ASP.net mvc(C#)中将id传入数据库。这里theid是主键,它应该是24-073110-XX格式,其中XX代表一个应该加1的数值。

我应该如何以这种格式插入ID?

2 个答案:

答案 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)