0

我遇到了不断变化的触发器的问题。触发器的目标是在更新文件路径时更改字符串的一部分。这是我到目前为止所拥有的,它编译得很好。

CREATE OR REPLACE TRIGGER TAU_ATTACHMENTS
AFTER UPDATE
ON ATTACHMENTS
FOR EACH ROW
 BEGIN
  IF :new.PATH LIKE 'file://Y:%' THEN   
    UPDATE ATTACHMENTS SET PATH = REPLACE(:new.PATH, 'file://Y:','file://\\MPS7536');
  END IF;
END;
/

当我进行更新单行的测试时,我得到了通常的变异表错误。有什么建议吗?我将不胜感激!

4

1 回答 1

0

您显然希望在存储之前修改触发器中列的值。但相反,提供的代码正在尝试更新整个attachments表。您可以像这样修改正在更新的记录的值:

CREATE OR REPLACE TRIGGER TAU_ATTACHMENTS
BEFORE UPDATE
ON ATTACHMENTS
FOR EACH ROW
 BEGIN
  IF :new.PATH LIKE 'file://Y:%' THEN   
    :new.PATH = REPLACE(:new.PATH, 'file://Y:','file://\\MPS7536');
  END IF;
END;
/

请注意,这应该是BEFORE UPDATE触发器。

于 2014-02-21T17:05:20.353 回答