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

前端之家收集整理的这篇文章主要介绍了数据库 – 我应该检查代码中的DB约束,还是应该捕获由DB抛出的异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序将数据保存到名为Jobs的表中.作业表有一个名为Name的列,它有一个UNIQUE约束.名称列不是PRIMARY KEY.我想知道在尝试保存/更新新条目之前,我是否应该检查重复的条目,或者最好等待数据访问层抛出的异常.如果这个应用程序很重要,我正在使用NHibernate

感谢大家的伟大投入.

我已经找到一个原因,为什么我应该在代码中验证,而不仅仅是等待抛出异常(并被我的代码捕获).似乎NHibernate只会抛出一个NHibernate.Exceptions.GenericADOException,这在这种情况下不是异常的原因.还是我在这里缺少NHibernate的一个方面?

解决方法

答案是:两者.

如果您的数据库具有约束条件,则可以保证数据的某些不变量,例如唯一性.这有几种方式:

>如果你有一个bug
申请,违反
约束将标记某事
否则不会被注意到.
>数据库的其他用户可以
假设更多的行为
DBMS强制执行的数据
不变量.
>数据库保护自己
不正确的更新违反了
限制.如果你发现有其他的
系统或界面填充
数据库跟踪,
数据库执行的约束
意味着任何东西被捕获
约束不会(或至少)
不太可能)破坏您的系统.

除了最简单的情况,应用程序和数据库生活在M:M关系中.应用程序仍应具有适当的数据和业务规则验证,但您仍然不应该将应用程序计划为数据的唯一客户.在数据仓库工作几年,您将看到人们以这种心态设计的应用程序的效果.

猜你在找的MsSQL相关文章