如何停止允许相同的主键

时间:2012-04-05 21:59:52

标签: c# asp.net asp.net-mvc-3 asp.net-mvc-3-areas

大家好我们正在使用MVC3,并想知道如何停止在我的应用程序中输入相同的主键。我将主键设置为NVARCHAR(100)并且它可以允许控制台名称我需要一个模拟验证的reg x以防止用户再次输入相同的名称,谢谢

如果您需要更多信息,请询问

2 个答案:

答案 0 :(得分:2)

正如我最近回答的那样,我建议不要使用varchar()和nvarchar()列作为主键。它们在连接和QueryById()操作上较慢,并且诱惑是允许编辑值(我也建议反对)。编辑主键很糟糕,因为列上有聚簇索引。如果您更改了足够的值,则会使索引倾斜并且必须重建。

最好使用IDENTITY列(SQL Server)或SEQUENCE(Oracle)并在Name列上设置UNIQUE约束。使用唯一约束,如果用户尝试输入重复的名称,数据库引擎将引发异常。您的代码应捕获异常并向用户显示相应的错误消息。

答案 1 :(得分:0)

我认为你不需要正则表达式。在将新记录添加到数据库之前,只需执行select并检查它是否已存在。

和mgnoonan一样,使用varchars作为主键通常不是好习惯。每当我碰到它时,它最终都会引起问题。