【问题标题】:Error handling for SQL UNIQUE Constraint?SQL UNIQUE 约束的错误处理?
【发布时间】:2013-12-04 15:50:23
【问题描述】:

可以在 SQL UNIQUE 约束中实现任何适当的错误处理吗?到目前为止,我显然得到了:Error: Duplicate entry 'test1' for key 'username'

但如果可能的话,我希望它显示自定义评论

【问题讨论】:

  • 我不懂 PHP,但通常你会从你的数据库驱动程序中得到一个错误代码。对于 Oracle,错误编号为 1,对于 Postgres 23505,... 捕获异常,检查错误编号并在代码中采取相应措施。

标签: php sql error-handling constraints unique


【解决方案1】:

您应该在插入此代码之前检查您的应用代码
不存在具有相同用户名的其他行的行。

然后如果存在,向用户显示您想要的错误。

解析此唯一约束错误
(在你得到它之后)不是一个好主意。

所以在之前做,而不是之后做。

【讨论】:

  • 首先检查行只会使数据库正在执行的工作加倍。首先您的应用程序检查它,然后在插入数据库时​​再次检查。处理异常是更多更有效的方法。而且您不需要“解析”错误消息。您可以检查 SQLSTATE 或错误 code
  • 是的,这是双重工作,但我不能同意这一点。也许你只是从数据库方面看它。
  • 但是这种方法并不能解决问题。如果您有多个事务,那么其他一些会话可以在检查 (select) 和实际插入之间的时间之间插入一行。因此,您必须在插入期间检查是否有任何错误,最后您会遇到错误检查和服务器上的双重负载 - 这使得应用程序不可扩展。
  • 这些调用通常通过其他方式在应用程序或某些中间件用户管理服务级别进行同步。我认为您是在谈论一个典型的 2 层应用程序。如果是的话,我完全同意这种情况。所以无论如何,我也明白你的观点。
猜你喜欢
  • 2016-05-26
  • 1970-01-01
  • 2022-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多