[数据库触发/交易新手]
在我的应用中,我的用户可以创建,编辑和删除房间。如果分配了项目的房间被移除,我想将他们的房间位置默认为名为“未分配”的通用房间。现在我在应用程序级别执行此操作。我的问题是,我应该在数据库级别这样做吗?如果在使用触发器的MySQL中确实会发生这种情况,我该如何让我的应用程序意识到任何失败或成功?
答案 0 :(得分:1)
现在我正在申请级别
这样做
这通常是最好的。
代码属于应用程序。
数据属于数据库。
代码不属于数据库,不仅仅是数据属于应用程序代码。
Truggers通常是一个非常糟糕的主意,因为它们将处理逻辑分成两个部分 - 应用程序和数据库。
通常最好将应用程序逻辑放在一个地方。在数据库之外。
数据是应用程序中最有价值的部分。不要用触发器或其他应用程序逻辑来污染它。
[这个答案将被那些喜欢数据库中的存储过程和触发器的人们所倾倒。]
答案 1 :(得分:0)
答案 2 :(得分:0)
就个人而言,我会在应用层执行业务逻辑。正如您所指出的,您的业务应用程序必须知道该房间是否已分配或未分配。通过在应用程序层执行此操作,您不会失去任何效率,并且您的代码将更容易阅读,因为它将全部位于一个位置。
就个人而言,我几乎只会将触发器用于数据库功能,例如记录对记录的更改。触发器是理想的选择,通过使用触发器,无论业务层在做什么,都可以保证对记录的任何更改都会起作用。