我通过从文本框中获取名称和姓氏的第一个双字符来创建自定义CustomerID,如下所示:
string CustomID = (FirstNameTxtbox.Value.Substring(0, 2) + LastNametxtbox.Value.Substring(0, 2));
为了避免重复的CustomerID,我试图:
获取第五个值,即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)) ;
示例:
第一name=麦
姓=岛
CustomerID = MASH1
下一个值将是例如KAAR2
发布于 2016-11-02 05:35:37
使主键成为一个自动增量整数,而CustomerID
是一个基于ID
计算的字符串,这样它就不会重复。
您可以通过以下方式设置CustomerID
:
ID
的计算字段CustomerID
的触发器CustomerID
您的CustomerID
可以类似于0000001
。
例:第一个客户的主键是1,CustomerID
是000001
,下一个客户是000002
等等。
发布于 2016-11-01 20:53:47
不推荐您的实践,您应该设计一个带有自动增量小值(如整数)的主键,请记住,表是在聚集索引(主键)上进行物理排序的,并且您的非聚集索引是根据主键确定的。
如果仍然需要,可以将合并的值添加到另一个字段中,如果您的查询是基于它,则为其创建一个非聚集索引。
发布于 2016-11-02 05:01:57
是的,主键( ID )是必需的,但是客户ID可以是自定义字符串,就像‘任何’。
我你想像这样生成客户ID
*首个name= Mak
姓=岛
CustomerID = MASH1
下一个值将为例如KAAR2 2*
使用前端生成Server /Oracle中的KA(第一)AR(最后)+序列。
CREATE SEQUENCE [dbo].[CustomerId_Generation]
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE -9223372036854775808
MAXVALUE 9223372036854775807
CACHE
GO
获取序列值,然后添加到数据库中。
有一种情况是,如果您遵循这种方法,您的代码也可以处理用于返回客户的相同的CutomerID,而不是重复的相同的CutomerID。
https://stackoverflow.com/questions/40368313
复制相似问题