【问题标题】:Auto-Index generation in C# .Net by coding通过编码在 C# .Net 中生成自动索引
【发布时间】:2011-01-21 03:59:12
【问题描述】:
你好先生
在 C# .net 项目中,我有生成自动索引的代码,它工作正常。我使用了如下逻辑;
第一次计算表中有多少行,然后检索表中存储的值。
然后无论值是多少,下一个字段都会增加 1,因此它是下一个索引。
索引大于10时会出现问题。表中的索引是这样存储的
1
10
11
2
3
4
5
6
7
8
9
所以表中的最后一个值是 9,下一个增量将产生 10,这已经是
生成所以会是主键违规错误。
所以请指导如何在我的项目中实现自动索引生成。
【问题讨论】:
标签:
c#
asp.net
sql
indexing
【解决方案1】:
你为什么不把专栏变成这样的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
)
希望对你有帮助
【解决方案2】:
您需要从表中为该字段/列获取 MAX 值,而不是 COUNTING ROWS,这里根据给定的值将是 11,然后将其增加 +1。
所以你需要在你的代码中使用以下查询,
Select Max(Key Field) + 1 from [table name]//this will give you new key value i.e. 12
我建议你使用标识列,这样你就不必担心增加主键值。
【解决方案3】:
检查自动索引的数据类型...我怀疑它是否被视为字符串。您需要做的第一件事是将数据类型定义为整数。到目前为止,你的播种没问题。