为什么“变异表错误”是运行时?

时间:2018-07-06 04:11:48

标签: sql oracle

最近在一次采访中,有人问我什么是“变异表错误”。 我说过,当行级触发器在同一张表上有dml查询时,就会发生这种情况。 然后,面试官问是否是这种情况,那么应该是compli time错误,因为编译器知道触发器在同一张表上有一个dml查询。

1 个答案:

答案 0 :(得分:2)

出于简单的原因,触发器包含您要包含的任何逻辑。

例如,如果触发器具有:

if :new.start_date > sysdate + 1 then
  select ... [my bad dml that would cause a mutating table error]
end if;

那它应该不编译吗?就我们所知,IF条件可能永远不会评估为真,并且有问题的DML将永远不会运行。