2014-02-21 69 views
0

我遇到了不斷變化的觸發器問題。觸發器的目標是更新文件路徑時更改字符串的一部分。這是我到目前爲止,它編譯得很好。Oracle 11g觸發器替換部分文本字符串

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

當我做一個更新單行的測試時,我得到了通常的變異表錯誤。有什麼建議?我會非常感激!

回答

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觸發。

+0

它的工作完全謝謝你!它總是讓我感受到的小事情。 :) – PhelpsK