1

我最近遇到了这个问题:我为错误的表创建了一个触发器(拒绝删除表 PHI)。

SET TERM ^ ;
CREATE OR ALTER TRIGGER PHI_BD0 FOR DHI
ACTIVE BEFORE DELETE POSITION 0
AS
begin
  exception delnotallowed;
end
^
SET TERM ; ^

我忽略了触发器是在表 DHI 而不是 PHI 上创建的。所以更正了语句并再次运行它 - 通常 - 重新创建触发器并应该更正问题。

SET TERM ^ ;
CREATE OR ALTER TRIGGER PHI_BD0 FOR PHI
ACTIVE BEFORE DELETE POSITION 0
AS
begin
  exception delnotallowed;
end
^
SET TERM ; ^

脚本成功执行,但 - 真的很奇怪 - 旧触发器仍然存在。PHI 上没有触发器,旧触发器在 DHI 上仍然有效。

如果以相同的方式更改其他触发器而不更改目标表,则始终接受更改(如预期的那样)。

解决上述问题的唯一方法是在运行脚本之前删除触发器。当然,这不是一个真正的问题,但像这样的事情让我感到害怕,因为如果出现问题,我不能依赖被触发的异常。

更新:我编辑了完整的帖子,很抱歉首先发布了不完整的注释。我破解了它并想稍后完成它,但不小心过早地发布了它。对此感到抱歉。

4

0 回答 0