gpt4 book ai didi

MySQL 触发器将百分比_完成更新到父任务中,其值是子任务的平均百分比_完成

转载 作者:行者123 更新时间:2023-11-29 22:12:29 25 4
gpt4 key购买 nike

我有以下任务表:

id | taskName | parentTask | percent_complete
1 A | 1 | 0
2 A.1 | 1 | 70
3 A.2 | 1 | 20
4 B | 4 | 0
5 B.1 | 4 | 40
6 B.2 | 4 | 0
7 B.2.1 | 6 | 50
8 B.2.2 | 6 | 20



Task A is parent task of task A.1 and A.2
Task A.1 and A.2 is child task of Task A
Task B is parent task of task B.1 and B.2
Task B.1 and B.2 is child task of Task B
Task B.2 is parent task of task B.2.1 and B.2.2
Task B.2.1 and B.2.2 is child task of task B.2

当我更新子任务task.percent_complete时,我需要一个触发器来更新父任务task.percent_complete。

在这种情况下,我的目标是计算子任务的平均列percent_complete,然后将结果更新到父任务的列percent_complete。

结果将是:

id | taskName | parentTask | percent_complete
1 A | 1 | 45
2 A.1 | 1 | 70
3 A.2 | 1 | 20
4 B | 4 | 37.5
5 B.1 | 4 | 40
6 B.2 | 4 | 35
7 B.2.1 | 6 | 50
8 B.2.2 | 6 | 20

这可能吗?

最佳答案

对我来说,你应该考虑改变你的表结构。您不应将所有内容都保留在一个表中,而应将父辈的complete_percent 保留在其他表中。这就是原因。

当您对子complete_percent 进行更改时。然后,您必须访问同一个表来计算总的complete_percent,这将导致变异错误。这意味着,当表被任何DML语句修改时,则不允许同时被触发器访问。

可能的解决方案

您应该考虑将触发器用作语句级别。但是,您同样无法跟踪表中的每个更改。因为,NEWOLD 可以在行级触发器中使用。

关于MySQL 触发器将百分比_完成更新到父任务中,其值是子任务的平均百分比_完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com