我试图找出我是否应该在我的
数据库内的触发器或约束中使用业务关键逻辑.
到目前为止,我已经在触发器中
添加了逻辑,因为它可以控制下一步会发生什么,意味着我可以提供
自定义用户消息,而不是可能会混淆
用户的
错误.
使用约束超过触发器有什么明显的性能增益,以及确定使用哪些方法的最佳做法是什么?
约束双手!
>使用约束条件指定关系原则,即关于数据的事实.除非某些事实发生变化(即新的要求),否则您将永远不需要更改约束条件.
>使用触发器指定如何处理数据(插入,更新等).这是一种“非关系”的做事方式.
为了更好地解释自己的一个比喻:编写SQL查询的正确方法是指定“你想要什么”,而不是“如何获得” – 让RDBMS找出最好的方式为您做.同样适用于这种情况:如果您使用触发器,您必须牢记执行顺序,级联等各种各样的事情.如果可能,让sql为您做限制.
这并不是说触发器没有用处.他们这样做:有时你不能使用约束来指定一些关于你的数据的事实.这是非常罕见的.如果它发生在你身上,那么模式可能有一些问题.