最近在一次采访中,有人问我什么是“变异表错误”。 我说过,当行级触发器在同一张表上有dml查询时,就会发生这种情况。 然后,面试官问是否是这种情况,那么应该是compli time错误,因为编译器知道触发器在同一张表上有一个dml查询。
答案 0 :(得分:2)
出于简单的原因,触发器包含您要包含的任何逻辑。
例如,如果触发器具有:
if :new.start_date > sysdate + 1 then
select ... [my bad dml that would cause a mutating table error]
end if;
那它应该不编译吗?就我们所知,IF条件可能永远不会评估为真,并且有问题的DML将永远不会运行。