首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学生名册号码的生成与数据库存储

学生名册号码的生成与数据库存储
EN

Stack Overflow用户
提问于 2022-02-20 09:48:08
回答 3查看 332关注 0票数 0

我有一个asp.net webforms申请,在那里学生可以填写一份表格并提交。然后将学生信息保存到数据库中。有一个自动生成他们的学籍号码的系统。为了完成这项任务,我创建了一个单独的表,其中只有一个列名为"LastRollNumber“。该表还有一个ID列。这个表总是只有一行。因此,如果一名学生承认自己,那么在提交表格后,申请表将检查表格中的最后一卷号,并添加1并更新表格。我使用了以下SQL来执行此操作:

代码语言:javascript
复制
"UPDATE [dbo].[AcademicRollData] SET [LastRollNumber] = [LastRollNumber] +1 OUTPUT inserted.LastRollNumber WHERE [ID]=1;"

许多学生正在访问应用程序。应用程序运行良好,但有些滚动号被遗漏了。没有重复的号码,但有时会丢失。我做错什么了?完成这项任务的最佳方法是什么?请帮助我拿出你宝贵的答案来解决这个问题。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2022-02-20 10:11:35

您试过scope_identity()吗?

代码语言:javascript
复制
dim cmd as sqlcommand=new sqlcommand("insert into table () values();SELECT CAST(scope_identity() AS int)",connection)
dim LastRollNumber as integer=cmd.ExecuteScalar

cmd=new sqlcommand("UPDATE [dbo].[AcademicRollData] SET [LastRollNumber] = " & LastRollNumber +1 & " WHERE [ID]=" & LastRollNumber",connection)
票数 0
EN

Stack Overflow用户

发布于 2022-02-20 13:05:52

根据我的理解,您不需要创建一个单独的表来生成卷号。推荐的方法是使用max()+1。此外,您还可以使列是唯一的,而不是空的,以避免重复和空值。也可以锁定表或使用事务作用域。

要插入的示例查询

代码语言:javascript
复制
INSERT INTO [dbo].[AcademicRollData]
( rollNumber, column1, otherColumn )
VALUES 
((SELECT MAX( rollNumber )+1 FROM [dbo].[AcademicRollData] acaRollData), 
'value1', 'value')

在这种情况下,您不需要运行额外的更新查询。

如果你明白你的目的,请告诉我。

票数 0
EN

Stack Overflow用户

发布于 2022-02-20 15:52:13

在Server中,可以使用标识列,该列使用在1处指定的种子自动递增,还可以在Oracle和Server中使用序列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71193179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档