通过编码在C#.Net中生成自动索引

时间:2011-01-21 03:59:12

标签: c# asp.net sql indexing

先生,你好 在C#.net的项目中,我有生成自动索引的代码,它运行正常。我用过如下逻辑; 首先计算表中的行数然后检索表中存储的值。 然后,对于下一个字段,它将增加1,因此它是下一个索引。 当索引大于10时会出现问题。表中的索引就像这样存储 1 10 11 2 3 4 五 6 7 8 9

所以表中的最后一个值是9,下一个增量将产生10,这已经是 生成所以它将是主键违规错误。

因此,plz指导如何在我的项目中实现自动索引生成。

3 个答案:

答案 0 :(得分:2)

为什么不把这个列设为Identity column

CREATE TABLE [dbo].[Foo](
    [Foo] [int] IDENTITY(1,1) NOT NULL,
    //Other columns
)

或如果数据库已经创建则更改

ALTER TABLE [dbo].[Foo](
    [Foo] [int] IDENTITY(<Enter your last maximum number in the database>,1) NOT NULL,
    //Other columns
)

希望有所帮助

答案 1 :(得分:2)

而不是COUNTING ROWS,你需要从表中获取该字段/列的MAX值,这里根据给定的值,它将是11,然后将其增加+1。

因此,您需要在代码中使用以下查询,

    Select Max(Key Field) + 1 from [table name]//this will give you new key value i.e. 12

我建议您使用Identity列,这样您就不必担心增加主键值。

答案 2 :(得分:0)

检查自动索引的数据类型...我怀疑它被视为字符串。您需要做的第一件事是将数据类型定义为整数。到目前为止你的播种还可以。