0

作为我被要求做的令人讨厌的 hack 的一部分,我需要修改触发器以更新表中的关联记录 - 但我收到了 mutating table 错误。

数据如下所示:

roster table
Id   person_id  route_id  active_ind
1    1          1         Y
2    2          1         Y
3    3          2         Y
4    4          2         Y  

如果 person_id = 1 的 active_ind 设置为 N,我需要将与同一路线(route_id = 1)关联的其他人的 active_id 也设置为 N。

有一个当前触发器(更新后)可以更新其他可以正常工作的路由关联表。添加以下代码时,出现变异表错误:

 update roster r
    set r.active_ind = 'N'
    where r.route_id = :new.route_id
      and r.id != :new.id
      and r.active_ind = 'Y';

这是因为我试图在更新过程中更新表。任何人都可以提出解决方案吗?

4

1 回答 1

0

突变表错误是当我们尝试操作表上的行时发生的错误,当触发器由于同一张表上的 DML 语句而被触发时。为避免突变表错误,最好使用COMPUND TRIGGERS

于 2014-09-16T07:49:03.470 回答