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后,下级部门的treeid自动变过来啊

解决方案 »

  1.   

    表xdepartment01使用了行级触发器而成了变异表,不能在该行级触发器中对该表进行更新,只能在语句级触发器使用更新语句
    可以使用自治事务
    CREATE OR REPLACE TRIGGER trigger_name
    AFTER update ON xdepartment01
    FOR EACH ROW
    DECLARE
        pragma autonomous_transaction;
    BEGIN
        UPDATE xdepartment01 SET TREEID = :new.treeid||substr(:old.treeid,length(:old.treeid)-1,2)
        WHERE TREEID LIKE ''''||:old.treeid ||'%''' ;
        commit;
    END;
    /
    试一下