CREATE OR REPLACE TRIGGER trigger_name AFTER update ON xdepartment01 FOR EACH ROW DECLARE BEGIN UPDATE xdepartment01 SET TREEID = :new.treeid||substr(:old.treeid,length(:old.treeid)-1,2); WHERE TREEID LIKE ''''||:old.treeid ||'%''' ; END;这样看看。
一、你是用老的treeid的最后2位加在新的treeid的后面,是吗? 二、触发器不能操作本身,你不能用update本表。 三、试试这个 CREATE OR REPLACE TRIGGER trigger_name before update ON xdepartment01 FOR EACH ROW DECLARE BEGIN :new.treeid := :new.treeid||substr(:old.treeid,length(:old.treeid)-1,2);END;
AFTER update ON xdepartment01
FOR EACH ROW
DECLARE
BEGIN
UPDATE xdepartment01 SET TREEID = :new.treeid||substr(:old.treeid,length(:old.treeid)-1,2);
WHERE TREEID LIKE ''''||:old.treeid ||'%''' ;
END;这样看看。
create的时候可以用when来限定触发条件。
否则触发器内部有触发了一个update是不?
二、触发器不能操作本身,你不能用update本表。
三、试试这个
CREATE OR REPLACE TRIGGER trigger_name
before update ON xdepartment01
FOR EACH ROW
DECLARE
BEGIN
:new.treeid := :new.treeid||substr(:old.treeid,length(:old.treeid)-1,2);END;