SQL:如何自动增加数据库中的值
本文关键字:数据库 增加数 增加 何自动 SQL | 更新日期: 2023-09-27 18:15:55
我正在创建一个自定义CustomerID,从文本框中获取名字和姓氏的第一个双字符,如下所示:
string CustomID = (FirstNameTxtbox.Value.Substring(0, 2) + LastNametxtbox.Value.Substring(0, 2));
以避免重复的CustomerID我想:
得到第5个值,它是整型,因为前4个值是字符。然后增加1
my attempt:
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
不建议您这样做,您应该设计一个具有Auto Increment小值的主键,例如整数,记住表是根据聚集索引(您的主键)进行物理排序的,而非聚集索引是基于您的主键的。
如果您仍然需要,您可以在另一个字段中添加您的组合值,如果您的查询是基于它的,请为它创建一个非聚集索引。
使主键为一个自动递增的整数,并且CustomerID
是一个基于ID
计算的字符串,这样它将永远不会重复。
可以通过以下命令设置CustomerID
:
- 基于自增
ID
的计算域 - 触发插入和设置
CustomerID
- 在后端自定义代码,添加客户对象,检索主键并设置
CustomerID
你的CustomerID
可以是类似于0000001
的东西。
示例:第一个客户的主键为1,CustomerID
为000001
,下一个客户为000002
,依此类推
是主键(id)是必需的,但客户id可以是自定义字符串,如'任何'。
如果您想像这样生成Customer ID
* name= Mak
last name = shima
CustomerID = 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
获取序列值,然后添加到数据库中。
有一种情况,相同的 customerid 返回的客户比我的意思是重复相同的 customerid 也可以由你的代码处理,如果你遵循这种方法。