当前位置:  开发笔记 > 编程语言 > 正文

我应该检查代码中的数据库约束,还是应该捕获数据库抛出的异常

如何解决《我应该检查代码中的数据库约束,还是应该捕获数据库抛出的异常》经验,为你挑选了1个好方法。

我有一个应用程序将数据保存到名为Jobs的表中.Jobs表有一个名为Name的列,它具有UNIQUE约束."名称"列不是PRIMARY KEY.我想知道在尝试保存/更新新条目之前是否应该自己检查重复条目,或者最好是等待数据访问层抛出的异常.如果它有任何重要性,我正在使用NHibernate这个应用程序


感谢大家的巨大投入.

我找到了另一个原因,我应该在代码中验证,而不是等待抛出异常(并由我的代码捕获).似乎NHibernate只会抛出一个NHibernate.Exceptions.GenericADOException,它在这种情况下对异常的原因没有太多信息.或者我在这里错过了NHibernate的一个方面?



1> ConcernedOfT..:

答案是:两者兼而有之.

如果您的数据库有约束,它可以保证有关数据的某些不变量,例如唯一性.这有助于以下几种方式:

如果您的应用程序中存在错误,则违反约束将标记可能不会被注意到的内容.

当DBMS强制执行不变量时,数据库的其他用户可以更多地了解数据的行为.

数据库保护自己免受违反约束的不正确更新.如果您发现有一些其他系统或接口在数据库中填充数据库,则数据库强制执行的约束意味着约束捕获的任何内容都不会(或至少不太可能)破坏您的系统.

除了最微不足道的案例之外,应用程序和数据库都存在于M:M关系中.应用程序仍应具有相应的数据和业务规则验证,但您仍然不应该计划您的应用程序是数据的唯一客户.在数据仓库中工作几年,您将看到具有这种思维模式的人设计的应用程序的效果.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有