我正在开发一个带有以下设计的.ASPX页面
Firstname
Lastname
Address
City
Mobile
使用标签和文本框向用户表示。
当用户单击“保存”按钮时,数据将保存在SQL Server 2008 Express数据库表中。
表具有以下架构
RecordNo-int(PK)
Firstname-nvarchar(50)
Lastname-nvarchar(50)
Address-nvarchar(500)
City-nvarchar(50)
Mobile-nvarchar(12)
在页面加载时,我还向用户显示recordno。
此记录编号是根据表格中的记录数生成的。
我得到了记录数,只是将它增加1并将其放在RecordNo上。
现在,如果在一台PC上发生这种情况,它可以正常工作。
第一个条目将用RecordNo 1表示
等等。
但是,如果表中没有记录,并且同一页面由4个不同的用户同时打开,则所有用户
用RecordNo 1表示。
然后,首先单击“保存”按钮的用户将能够完美地保存数据。
但是其他三个用户会遇到错误,因为他们正在输入已经输入的RecordNo 1信息。
我如何克服这个?
每个新条目都应该赋予新的唯一RecordNo。
我有什么方法可以做到这一点吗?
答案 0 :(得分:0)
将RecordNo设为IDENTITY(1,1)字段,忘记生成密钥的所有逻辑。 IDENTITY会自动为您完成此操作。
如果需要,可以在插入记录后调用SCOPE_IDENTITY()来捕获生成的值。
答案 1 :(得分:0)
为什么要显示您刚刚将主键列设置为Identity(1,1)的条目数,这会在每次插入新行时将该列值增加1。这就是“n”个用户能够同时进行输入的方式。
答案 2 :(得分:0)
将标识列设置为:
RecordNo int Identity(1,1) Primary Key
在Identity(1,1)中,第一个1是起始值,其他是增量值。
如果您不想使用身份,请使用以下代码:
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY RecordNo ASC) AS RecordNumber,
FirstName,LastName,Address,City,Mobile from yourTableName) AS RecordNo