你在哪里放置SQL RAISERROR代码?

时间:2016-09-12 17:20:20

标签: sql sql-server ms-access sql-server-2012

当用户输入重复键(而不是系统消息2627)时,我尝试设置自定义错误消息以传递给MS Access(来自SQL Server)。我已经阅读了sp_addmessage和RAISERROR以及TRY / CATCH块,这些都非常有意义。但是我看起来似乎没有说出放置RAISERROR代码(和TRY / CATCH块)的位置,所以它实际上会传回给应用程序。那么,代码在哪里?

1 个答案:

答案 0 :(得分:4)

不要在用户输入重复密钥方面考虑它。相反,考虑用户只需输入密钥,其中一些在您尝试插入密钥时会变成重复。这是一个微妙的区别,但它可以帮助您,因为它意味着您可以考虑将代码用于所有新表插入而不仅仅是特定类型的插入。

当用户输入密钥时,将运行INSERT sql语句。如果密钥是重复的,并且您在表上定义了约束以防止这种情况,那么INSERT语句将失败。如果您的Access应用程序已编写自定义SQL,则可以将其包装在TRY / CATCH中,并将RAISERROR放入CATCH块中。如果您的Access应用程序是您从未看到任何SQL,那么您可能会陷入困境,并且必须忍受内置行为。