C# SQL:如何在数据库中自动增加值
我通过从文本框中获取名字和姓氏的前两个双字符来创建自定义CustomerID,如下所示:C# SQL:如何在数据库中自动增加值,c#,sql,asp.net,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(Cust
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姓氏=shima CustomerID=MASH1
下一个值将是,例如KAAR2。不建议您这样做,您应该设计一个具有自动递增小值(如整数)的主键,请记住,表是根据聚集索引(主键)进行物理排序的,而非聚集索引是根据主键进行键控的
如果您仍然需要组合值,可以在另一个字段中添加组合值,如果您的查询基于该值,请为其创建一个非聚集索引。不建议您这样做,您应该设计一个具有自动递增小值(如整数)的主键,请记住,表是根据聚集索引进行物理排序的(主键),非聚集索引将基于主键设置键 如果您仍然需要组合值,您可以在另一个字段中添加组合值,如果您的查询基于此字段,请为其创建非聚集索引。是的,主键(id)是必需的,但客户id可以是自定义字符串,如“任意” 我想你要像这样生成客户ID *名字=Mak 姓氏=shima CustomerID=MASH1 下一个值将是,例如KAAR2* 使用前端在Sql Server/Oracle中生成KA(first)AR(last)+序列
CREATE SEQUENCE [dbo].[CustomerId_Generation]
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE -9223372036854775808
MAXVALUE 9223372036854775807
CACHE
GO
获取序列的值并随后添加到数据库
有一种情况是,对于返回的客户,相同的CutomerID比我的意思是重复的相同的CutomerID也可以由您的代码处理,如果您遵循这种方法。是的,主键(id)是必需的,但客户id可以是自定义字符串,如“任何东西”
我想你要像这样生成客户ID
*名字=Mak
姓氏=shima
CustomerID=MASH1
下一个值将是,例如KAAR2*
使用前端在Sql Server/Oracle中生成KA(first)AR(last)+序列
CREATE SEQUENCE [dbo].[CustomerId_Generation]
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE -9223372036854775808
MAXVALUE 9223372036854775807
CACHE
GO
获取序列的值并随后添加到数据库
有一种情况是,返回客户的相同CutomerID比我的意思是重复的相同CutomerID也可以由您的代码处理,如果您遵循这种方法。将主键设为自动递增整数,
CustomerID
是一个基于ID
计算的字符串,这是唉,它永远不会复制
您可以通过以下方式设置客户ID
:
ID
CustomerID
CustomerID
CustomerID
可以类似于0000001
例如:第一个客户的主键为1,
CustomerID
将为000001
,下一个客户将为000002
,依此类推。将主键设置为自动递增整数,CustomerID
是一个基于ID
计算的字符串,这样它就永远不会重复
您可以通过以下方式设置客户ID
:
ID
CustomerID
CustomerID
CustomerID
可以类似于0000001
例如:第一个客户的主键为1,
CustomerID
将为000001
,下一个客户将为000002
,依此类推。我强烈建议不要使用其他数据生成PK。如果需要更改名字或姓氏,会发生什么?为什么不使用数字自动递增键?@DStanley th我将用新的PK(customerID)创建一个更新sql语句。依赖表呢?您需要关闭所有引用完整性,更新主表和所有依赖表上的PK,然后重新打开RI。使用“智能”似乎有很多麻烦主键。@DStanley因此,请将CustomerID更改为非主键并执行递增操作。我强烈建议不要使用其他数据生成PK。如果需要更改名字或姓氏,会发生什么?为什么不使用数字自动递增键?@DStanley然后我将使用新PK创建一个update sql语句(customerID)。依赖表呢?您需要关闭所有引用完整性,更新主表和所有依赖表上的PK,然后重新打开RI。使用“智能”似乎很麻烦主键。@DStanley因此,请将CustomerID改为非主键并执行递增操作。虽然我同意您的意见,但主键并不总是聚集索引。但我如何从数据库中获取第5个值并递增它呢?@Makishima您能提供您想要的示例吗achieve@Makishima你不能增加它,当您插入数据库时,将该值留空,数据库为您计算出该值。然后,如果您需要该值作为其他行的外键,您可以将刚刚分配的值读回。@Yaman i更新,我认为现在的问题是如何自动递增varchar值?!虽然我同意您的意见,但primary键并不总是聚集索引。但我如何从数据库中获取第5个值并将其递增?@Makishima您能提供您想要的示例吗achieve@Makishima你不能增加它,你可以