有两个用户USER1、USER2,表空间分别是ROOM1、ROOM2,两个用户的实例下均有一个表T_USER,结构如下:
ID              number(10)      not null ;
login_name      varchar2(20)    not null ;
password        varchar2(20)    not null ;
full_name       varchar2(20)    null     ;
在USER2的表T_USER下建立触发器TRIGGER1,我是这样写的:
CREATE OR REPLACE TRIGGER TRIGGER1
BEFORE INSERT 
ON USER2.T_USER
FOR EACH ROW
declare sqlstr varchar2(1000);
begin
sqlstr := 'insert into user1.t_user( id,login_name,password,full_name ) values( '||:new.id||','''||:new.login_name||''','''||:new.password||''','''||:new.full_name||''')';
execute immediate sqlstr;
end;

解决方案 »

  1.   

    /**这是我在SQL/PLUS中执行的语句,
    insert into user2.t_user(id,login_name,password,full_name) values ( 7,'alex','111111','chenxiang') ;/**这是SQL/PLUS提示的错误信息。
    insert into t_user(id,login_name,password,full_name) values ( 7,'alex','111111','chenxiang')
                *
    ERROR 位于第 1 行:
    ORA-00942: 表或视图不存在
    ORA-06512: 在"USER2.TRIGGER", line 4
    ORA-04088: 触发器 'USER2.TRIGGER' 执行过程中出错
      

  2.   

    insert into user1.t_user( id,login_name,password,full_name ) values( new.id||,:new.login_name,:new.password,:new.full_name);
    这样写不就行了.
    如果你非要按你的写法,那就写成:
    sqlstr := 'insert into user1.t_user( id,login_name,password,full_name ) values('||:new.id||','||:new.login_name||','||:new.password||','||:new.full_name||')';试试.
      

  3.   

    我后面的字符串可能是错的,你的应该是对的.
    user2.t_user这个东西你去查查看是不是存在?
      

  4.   

    User1用戶(也就是觸發器的創建者)必須具有對User2.T_User創建觸發器、查詢數據、插入數據等的權限。
      

  5.   

    另外就是看user2.t_user是否真的存在。
      

  6.   

    表是存在的.而且这个用户是DBA用户.这个语句在SQL/PLUS里单独执行是没有问题的.只是放在触发器里边的时候会出错.不知道为什么.
      

  7.   

    ORA-00942: 表或视图不存在 
    说明user2没有访问user1对象的权限,可以
    以user1登录,然后授权:grant insert on t_user to user2
    RA-06512: 在"USER2.TRIGGER", line 4
    ORA-04088: 触发器 'USER2.TRIGGER' 执行过程中出错
    sbaz是对的