应该在应用程序级别或数据库级别上发生mysql触发器吗?

时间:2011-07-26 02:19:09

标签: mysql

[数据库触发/交易新手]

在我的应用中,我的用户可以创建,编辑和删除房间。如果分配了项目的房间被移除,我想将他们的房间位置默认为名为“未分配”的通用房间。现在我在应用程序级别执行此操作。我的问题是,我应该在数据库级别这样做吗?如果在使用触发器的MySQL中确实会发生这种情况,我该如何让我的应用程序意识到任何失败或成功?

3 个答案:

答案 0 :(得分:1)

  

现在我正在申请级别

这样做

这通常是最好的。

代码属于应用程序。

数据属于数据库。

代码不属于数据库,不仅仅是数据属于应用程序代码。

Truggers通常是一个非常糟糕的主意,因为它们将处理逻辑分成两个部分 - 应用程序和数据库。

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

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

[这个答案将被那些喜欢数据库中的存储过程和触发器的人们所倾倒。]

答案 1 :(得分:0)

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

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

Are database triggers evil?

答案 2 :(得分:0)

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

就个人而言,我几乎只会将触发器用于数据库功能,例如记录对记录的更改。触发器是理想的选择,通过使用触发器,无论业务层在做什么,都可以保证对记录的任何更改都会起作用。