WHERE TREEID LIKE ''''||:old.treeid ||'%''' ;
什么意思?你要匹配什么?

解决方案 »

  1.   

    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;这样看看。
      

  2.   

    不知道你要实现什么
    create的时候可以用when来限定触发条件。
    否则触发器内部有触发了一个update是不?
      

  3.   

    一、你是用老的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;