Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Sql server 如何使用ado.net增加注册号?_Sql Server_Ado.net - Fatal编程技术网

Sql server 如何使用ado.net增加注册号?

Sql server 如何使用ado.net增加注册号?,sql-server,ado.net,Sql Server,Ado.net,我正在使用ado.net表单将学生值插入表中。我想自动生成注册号。 例如,“R0001” 每次它都会自动递增1 “R0001”->“R0002”->“R0003”等 “R0010”->“R0011”等 “R0100”->“R0101”等 但我无法自动生成注册号。 有人能帮我吗?我会的 一个ID INT-IDENTITY列-它由SQL Server自动递增 添加一个计算的、持久化的列 ALTER TABLE dbo.YourTable ADD RegistrationNumber AS

我正在使用ado.net表单将学生值插入表中。我想自动生成注册号。 例如,“R0001”

每次它都会自动递增1

  • “R0001”->“R0002”->“R0003”等
  • “R0010”->“R0011”等
  • “R0100”->“R0101”等
但我无法自动生成注册号。 有人能帮我吗?

我会的

  • 一个
    ID INT-IDENTITY
    列-它由SQL Server自动递增

  • 添加一个计算的、持久化的列

    ALTER TABLE dbo.YourTable
       ADD RegistrationNumber AS 'R' + RIGHT('0000' + CAST(ID AS VARCHAR(4)), 4) PERSISTED
    
该表将包含
ID
列的值
1、2、3、4
,以及
RegistrationNumber
列的值R0001、R0002、R0003、
R0004
,一个选项:

  • 使用标识值,得到1、2、3、4、5等
然后执行以下操作之一:

  • 在客户机代码中添加R和前导零
  • 在桌子上用一根绳子

没有优雅而干净的方法来生成一个列R0001、R0002等,对于失败的插入,也会有间隙


您也可以使RegistrationNumber列唯一

如果您能够根据某个id/时间戳对现有字段进行排序,只需获取最新条目、删除r、递增并保存值即可

DECLARE @RegNum INT, @RegNumChar VARCHAR(5)
SET @RegNum = CAST(SUBSTRING(RegistrationNumber, 2, LEN(RegistrationNumber)) AS INT)
SET @RegNum = @RegNum + 1
SET @RegNumChar = 'R" + CONVERT(varchar(5), @RegNum)

创建表StudentID int NOT NULL IDENTITY(1,1)主键,名称varchar(20),课程varchar(20),注册号为'R'+右('0000'+强制转换(StudentID为varchar(5)),5))如何插入值?但如何在此表中插入值?@Sonu Kumar:insert(名称,课程)仅.SQL Server将管理StudentID和RegistrationNumber@Sonu库马尔:那么请接受和/或向上投票(我答案左边的勾号和向上箭头)。如果您指的是手动标识类型的操作,那么这对于并发来说是不安全的。两个进程可以很容易地获得相同的编号。下面是如何使此类手动解决方案对于并发来说是安全的:请阅读
DECLARE @RegNum INT, @RegNumChar VARCHAR(5)
SET @RegNum = CAST(SUBSTRING(RegistrationNumber, 2, LEN(RegistrationNumber)) AS INT)
SET @RegNum = @RegNum + 1
SET @RegNumChar = 'R" + CONVERT(varchar(5), @RegNum)