Pau*_*aul 6 sql-server duplicate-data exception-handling unique-constraint
让我们假设你的MSSQL 2008数据库中有一个唯一的索引约束违规,如下所示:
Violation of PRIMARY KEY constraint 'PK_ManufacturerCode'. Cannot insert duplicate key in object 'dbo.ManufacturerCode'. The duplicate key value is (8410179)
Run Code Online (Sandbox Code Playgroud)
目前我正在通过胖客户端中的全局异常处理程序处理此异常(使用ADO在Delphi 6中编写,但无关紧要,我计划将来使用C#.NET)并将异常消息附加到日志框中.
但我想亲自处理这个特定的重复键异常,并在客户端使用胖客户端自己的文本显示相应的错误消息.我可以解析匹配的错误消息,但不会这样做有两个原因:
使用带有自定义退出代码的RETURN或不断调用特殊存储过程来检查重复项,这并不能让我高兴.
Errors在 ADO 中,您可以在发生错误后访问连接属性,并检查该NativeError属性以获取 SQL Server 特定的错误号。
当您切换到 .NET 时,相同的数字将作为或Number的属性公开SqlExceptionSqlError
然而,查找特定的错误编号可能有点麻烦 - 对于重复密钥,错误编号为 2627。