我正在创建一个自定义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
答案 0 :(得分:2)
不推荐您的做法,您应该设计一个具有自动增量小值的主键,如整数,请记住该表在聚簇索引(您的主键)上进行物理排序,并且您的非聚集索引是基于的你的主键。
如果您仍然需要,可以在另一个字段中添加组合值,如果您的查询基于它,请为其创建非聚集索引。
答案 1 :(得分:1)
使主键成为自动增量整数,CustomerID
是基于ID
计算的字符串,这种方式永远不会重复。
您可以设置CustomerID
:
ID
CustomerID
CustomerID
您的CustomerID
可能类似于0000001
。
例如:第一位客户的主键为1,CustomerID
为000001
,下一位客户为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 。