如何让用户手动输入主键

Sas*_*Sas 1 c# database sql-server asp.net

我要求我的ASP.NET网站要求我让用户手动输入特定表的主键,如果用户输入了数据库中已存在的主键,系统应该通知用户"小学已经存在"或类似的东西.

我想让用户输入主键,当他输入已经存在的键时,系统将抛出主键约束违例的异常.因此,我将捕获该异常,并且在catch块中,我将显示一条错误消息,通知用户主键的重复.但是,我不确定这是一种正确的方法,还是有任何标准方法可以做到这一点?

Hei*_*nzi 5

是的,这是一种有效的方法.但是应该提到一些事情:

  • 使用代理键(计数器,GUID,...)作为主键而不是用户输入的值(自然键)具有很多优点,请参阅链接文章了解详细信息.如果您已经考虑过并决定使用自然键,那很好,我只是认为应该提到它.如果使用代理键,则可以通过唯一索引确保用户定义值的唯一性.

  • 抛出异常作为正常控制流程的一部分通常不赞成:对现有密钥执行SELECT,然后INSERT将比等待异常发生更优雅.(使用事务和适当的事务隔离级别,以确保SELECT和INSERT之间的其他客户端不能插入任何行).