mysql触发器应该发生在应用程序级还是数据库级?

mysql触发器应该发生在应用程序级还是数据库级?,mysql,Mysql,[数据库触发器/事务新增] 在我的应用程序中,我的用户可以创建、编辑和删除房间。如果删除了已分配项目的文件室,我希望将其文件室位置默认为一个名为“未分配”的通用文件室。现在,我正在应用程序级别执行此操作。我的问题是,我应该在DB级别这样做吗?如果在MySQL中使用触发器时确实会发生这种情况,那么我该如何让我的应用程序意识到任何失败或成功?“应该”是一个主观问题。现在可以用了吗?如果是这样,为什么要搞砸呢 这听起来像是你想参与的事情吗 现在,我正在应用程序级别执行此操作 那通常是最好的 代码属于

[数据库触发器/事务新增]

在我的应用程序中,我的用户可以创建、编辑和删除房间。如果删除了已分配项目的文件室,我希望将其文件室位置默认为一个名为“未分配”的通用文件室。现在,我正在应用程序级别执行此操作。我的问题是,我应该在DB级别这样做吗?如果在MySQL中使用触发器时确实会发生这种情况,那么我该如何让我的应用程序意识到任何失败或成功?

“应该”是一个主观问题。现在可以用了吗?如果是这样,为什么要搞砸呢

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

现在,我正在应用程序级别执行此操作

那通常是最好的

代码属于应用程序

数据属于数据库

代码不属于数据库,就像数据属于应用程序代码一样

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

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

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


[这个答案会被喜欢数据库中存储过程和触发器的人否决。]

就我个人而言,我会在应用层做业务逻辑。正如您所指出的,您的业务应用程序已经必须知道房间是已分配的还是未分配的。在应用程序层这样做不会降低任何效率,而且您的代码将更易于阅读,因为它将集中在一个位置

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