【发布时间】:2014-09-16 15:49:03
【问题描述】:
作为我被要求做的令人讨厌的 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';
这是因为我正在尝试更新正在更新的表。 任何人都可以提出解决方案吗?
【问题讨论】:
-
这是在 Oracle 11g 上。
标签: sql oracle triggers mutating-table