2011-07-26 45 views
0

[数据库触发器/交易新]应该在应用程序级别或数据库级别上触发MySQL触发器吗?

在我的应用程序中,允许我的用户创建,编辑和删除房间。如果分配有物品的房间被移除,我想将其房间位置默认为名为“未分配”的通用房间。现在我正在应用程序级别执行此操作。我的问题是,我应该在数据库级别进行此操作吗?如果这确实发生在使用触发器的MySQL中,那么我该如何让我的应用程序知道任何失败或成功?

回答

1

现在,我在应用层面

这通常是最好的事情了。

代码属于应用程序。

数据属于数据库。在应用程序代码比数据属于

规范不属于数据库,任何更多。

Truggers通常是一个非常糟糕的主意,因为他们的分段处理逻辑到两个地方 - 应用程序和数据库。

通常最好是将应用程序逻辑放在一个地方。数据库之外。

数据是应用程序中最有价值的部分。不要用触发器或其他应用逻辑来污染它。

[这个答案将通过谁喜欢在数据库中的存储过程和触发器的乡亲被downvoted]

+0

谢谢您的明确解释! – luckytaxi

0

“应该”是一个主观问题。现在工作正常吗?如果是这样,为什么搅乱它?

这听起来像是你想要参与的事情吗?

Are database triggers evil?

0

就个人而言,我会在应用层业务逻辑。正如您已经指出的那样,您的业务应用程序必须知道房间是否已分配或未分配。通过在应用层执行此操作,您不会失去任何效率,并且您的代码将更易于阅读,因为它将全部位于同一个位置。

就个人而言,我会用几乎完全触发数据库功能,如日志记录的更改。触发器非常适合这种情况,通过使用触发器,您可以保证对记录的任何更改都将被执行,而不管业务层在做什么。

相关问题