繁体   English   中英

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

[英]SQL: How to Auto-increment a value in the database

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

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

为了避免重复的CustomerID,我正在尝试:

由于前四个值是字符,因此获得第5个值,它是int。 然后再增加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
姓=岛

客户编号= MASH1

下一个值将是例如KAAR2

不建议您这样做,您应该设计一个具有小数值(如整数)的Auto Increment的主键,请记住,该表在物理上是按聚集索引(您的主键)排序的,而非聚集索引是根据您的主键进行键控的。

如果您仍需要合并值,可以将其添加到另一个字段中;如果您的查询基于该值,则可以为其创建非聚集索引。

将主键设置为自动递增整数,并且CustomerID是根据ID计算的字符串,这样就永远不会重复。

您可以通过以下方式设置CustomerID ID:

  1. 基于自动增量ID计算字段
  2. 触发插入操作并设置CustomerID
  3. 在后端中创建自定义代码,添加客户对象,检索主键并设置CustomerID

您的CustomerID可以是0000001

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

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

我要生成这样的客户ID

*名字=麦

姓=岛

客户编号= MASH1

下一个值将是例如KAAR2 *

使用前端在Sql Server / Oracle中生成KA(first)AR(last)+ Sequence。

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

获取序列值,然后添加到数据库。

某些情况下,如果您遵循此方法, 用于回头客的Same CutomerID比我的意思是重复的相同CutomerID也可以由您的代码处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM