没有在数据库表中输入重复记录

时间:2014-01-25 09:58:06

标签: asp.net sql-server-2008

我正在开发一个带有以下设计的.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。

我有什么方法可以做到这一点吗?

3 个答案:

答案 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