我有一个奇怪的业务需求,让我很难过。一些背景知识:基本上,我有两个用于跟踪程序改进的表:Enhancement 和 Bug。Enhancement->Bug的关系是1:m,Bug表有一个外键列EnhancementID。
两个表都有一个“状态”列,但这就是它变得棘手的地方。我的要求是增强的状态取决于其相关的错误。例如,如果我们有 3 个错误,增强 ID 为 100,状态为“测试中”,则增强 100 的状态应自动设置为“测试中”。有几个像这样的状态规则。
这个数据库由几个应用程序共享,所以我的第一个想法是在 Bug 表上使用“更新时”触发器。因为触发器在触发表中有一条 Select 语句,所以我收到“变异表”错误(当触发器触发时,我必须查询具有指定 EnhancementID 的所有错误的状态)。现在,我正在尝试实现此处概述的三个触发器解决方案:http ://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551198119097816936但我对在数据库触发器中放置如此多的逻辑变得谨慎。
所以我的问题是:我是否合理地解决了这个问题?有人可以提出更好的方法吗?也许使用增强状态的视图?