有没有人写过Oracle的触发器?我现在需要写一个触发器,可以同步(同步插入、复制、删除)两个schema中的表,但是编译时,总是不成功,请各位帮帮忙,多谢!高分
代码及错误如下:CREATE OR REPLACE TRIGGER tr_test_aa 
AFTER INSERT ON "EXZSTV"."TEST" 
REFERENCING OLD AS old NEW AS new
FOR EACH ROW Begin
IF INSERTING THEN 
 INSERT INTO "exnews"."TEST" (TESTaa)
 VALUES(:NEW.TESTaa);
END IF;
end  tr_test_aa ;
其中EXZSTV、exnews是两个schema,test是表名,testaa是字段,两个schema中都有test,并且表结构完全相同。
在编译时出现如下错误:
pls-00201:必须说明标识符‘exnews.test'

解决方案 »

  1.   

    可能是权限的问题,确认这个trigger owner 有对exnews.test 这个表的insert 权限
      

  2.   

    grant insert any table to EXZSTV;
      

  3.   

    我在我的用户sbfinger下执行如下代码:
    CREATE OR REPLACE TRIGGER tr_test_aa 
    AFTER INSERT ON "SBFINGER"."TEST" 
    REFERENCING OLD AS old NEW AS new
    FOR EACH ROW Begin
    IF INSERTING THEN 
     INSERT INTO "SBFINGER"."TEST" (NAME)
     VALUES(:NEW.NAME);
    END IF;
    end  tr_test_aa ;
    /没问题,用spool写到文件里如下:
    SQL> desc test
     名称                                      空?      类型
     ----------------------------------------- -------- ----------------------------
     NAME                                               VARCHAR2(10)
     EID                                                VARCHAR2(10)
     YEAR                                               VARCHAR2(4)
     MONTH                                              VARCHAR2(2)SQL> @d:\xx.sql触发器已创建SQL> SPOOL OFF你是怎么执行的,写成sql语句的文件吗,你可能少了操作符号“/”,末尾一定的跟这个。
    在一个我的sbfinger这里的权限是dba的。你在试试。
      

  4.   

    权限已经加入,但是还是没有成功,我用的是8.05,是不是有关系,还是提示同样的错误。
    pls-00201:必须说明标识符‘exnews.test',为什么啊?郁闷中