Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL:如何在数据库中自动增加值_C#_Sql_Asp.net - Fatal编程技术网

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

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

我通过从文本框中获取名字和姓氏的前两个双字符来创建自定义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
姓氏=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你不能增加它,你可以