有两个用户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;
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;
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' 执行过程中出错
这样写不就行了.
如果你非要按你的写法,那就写成:
sqlstr := 'insert into user1.t_user( id,login_name,password,full_name ) values('||:new.id||','||:new.login_name||','||:new.password||','||:new.full_name||')';试试.
user2.t_user这个东西你去查查看是不是存在?
说明user2没有访问user1对象的权限,可以
以user1登录,然后授权:grant insert on t_user to user2
RA-06512: 在"USER2.TRIGGER", line 4
ORA-04088: 触发器 'USER2.TRIGGER' 执行过程中出错
sbaz是对的