Triggers Oracle 11g触发器替换部分文本字符串

Triggers Oracle 11g触发器替换部分文本字符串,triggers,oracle11g,mutating-table,Triggers,Oracle11g,Mutating Table,我的触发器一直在变异。触发器的目标是在更新文件路径时更改字符串的一部分。这是我到目前为止得到的,它编译得很好 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:'

我的触发器一直在变异。触发器的目标是在更新文件路径时更改字符串的一部分。这是我到目前为止得到的,它编译得很好

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;
/

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

显然,您希望在存储触发器中的列之前修改该列的值。但是,提供的代码试图更新整个
附件
表。您可以修改正在更新的记录的值,如下所示:

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;
/

请注意,这应该是更新前的
触发器。

它工作得很好,谢谢!总是一些小事让我着迷。:)