SQL:如何自动增加数据库中的值

时间:2016-11-01 20:41:45

标签: c# sql asp.net

我正在创建一个自定义CustomerID,方法是从文本框中获取名字和姓氏的第一个双字符,如下所示:

 string CustomID = (FirstNameTxtbox.Value.Substring(0, 2) + LastNametxtbox.Value.Substring(0, 2));

以避免重复的CustomerID 我想:

获取第5个值,即int,因为前4个值是字符。然后将其增加1。

我的尝试:

string s =  cmd.CommandText= " Select MAX(CustomerID) from Customers";
string CustomID = (FirstNameTxtbox.Value.Substring(0, 2) + LastNametxtbox.Value.Substring(0, 2) + (Convert.ToInt32(s)+1)) ;

示例:

名字= Mak
姓氏=志摩

CustomerID = MASH1

下一个值将是例如KAAR2

3 个答案:

答案 0 :(得分:2)

不推荐您的做法,您应该设计一个具有自动增量小值的主键,如整数,请记住该表在聚簇索引(您的主键)上进行物理排序,并且您的非聚集索引是基于的你的主键。

如果您仍然需要,可以在另一个字段中添加组合值,如果您的查询基于它,请为其创建非聚集索引。

答案 1 :(得分:1)

使主键成为自动增量整数,CustomerID是基于ID计算的字符串,这种方式永远不会重复。

您可以设置CustomerID

  1. 基于自动增量ID
  2. 的计算字段
  3. 在插入时触发的触发器并设置CustomerID
  4. 后端的自定义代码,添加客户对象,检索主键并设置CustomerID
  5. 您的CustomerID可能类似于0000001

    例如:第一位客户的主键为1,CustomerID000001,下一位客户为000002,依此类推。

答案 2 :(得分:0)

是主键(id)是必需的,但客户ID可以是自定义字符串,如'任何'。

我想生成像这样的客户ID

*名字= Mak

姓氏=志摩

CustomerID = MASH1

下一个值将是例如KAAR2 *

使用前端在Sql Server / Oracle中生成KA(第一个)AR(最后)+序列。

CREATE SEQUENCE [dbo].[CustomerId_Generation] 
 AS [bigint]
 START WITH 1
 INCREMENT BY 1
 MINVALUE -9223372036854775808
 MAXVALUE 9223372036854775807
 CACHE 
GO

获取序列值并在之后添加到数据库。

如果您遵循此方法,则返回客户的情况与Same CutomerID 相比,我的代码也可以处理重复相同的 CutomerID