【问题标题】:Oracle Trigger - On update I need to update other rows in same table - getting mutate errorOracle 触发器 - 更新时我需要更新同一张表中的其他行 - 出现变异错误
【发布时间】: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';

这是因为我正在尝试更新正在更新的表。 任何人都可以提出解决方案吗?

【问题讨论】:

标签: sql oracle triggers mutating-table


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多