环境:windowsxp +oracle 10r2
用户 user1,user2
其中 user1 是dba的权限,并且已经手动由 sys给user1 grant create,select,alter,drop等的相关权限
user2只是普通的用户
user2中有两张表
create table ta(aa int) ;
create table tb(bb int) ;
现在user1想在user2.ta上建立触发器
create or replace trigger tri
AFTER INSERT OR DELETE OR UPDATE ON user2.ta
FOR EACH ROW
DECLARE
v_status INT;
v_sql_command VARCHAR2(4000);
BEGIN
IF INSERTING THEN
SELECT :NEW.aa INTO v_status FROM dual;
v_sql_command:=' INSERT INTO user2.tb(b1)VALUES('||v_status||')';
EXECUTE IMMEDIATE v_sql_command;
END IF;END tri;
编译成功,但执行报错。
ORA-00942: 表或视图不存在
ORA-06512: 在 "user1.tri", line 9
ORA-04088: 触发器 'user1.tri' 执行过程中出错 thanks
用户 user1,user2
其中 user1 是dba的权限,并且已经手动由 sys给user1 grant create,select,alter,drop等的相关权限
user2只是普通的用户
user2中有两张表
create table ta(aa int) ;
create table tb(bb int) ;
现在user1想在user2.ta上建立触发器
create or replace trigger tri
AFTER INSERT OR DELETE OR UPDATE ON user2.ta
FOR EACH ROW
DECLARE
v_status INT;
v_sql_command VARCHAR2(4000);
BEGIN
IF INSERTING THEN
SELECT :NEW.aa INTO v_status FROM dual;
v_sql_command:=' INSERT INTO user2.tb(b1)VALUES('||v_status||')';
EXECUTE IMMEDIATE v_sql_command;
END IF;END tri;
编译成功,但执行报错。
ORA-00942: 表或视图不存在
ORA-06512: 在 "user1.tri", line 9
ORA-04088: 触发器 'user1.tri' 执行过程中出错 thanks
可以利用dbms_output.put_line(v_sql_command);然后在sqlplus下执行看看是否可以
都没有问题,可以正常运行
因为trigger内的角色权限默认是无。