有這樣一個需求:用戶A在表空間ts1下,用戶B在表空間ts2下,要求在用戶B下創建一個trigger,這個trigger的主要功能是修改用戶A中的表。
trigger如下:

create or replace trigger tri_test
  after insert or update or delete on   t_test
  for each row

begin
     if inserting then
  insert into A.t_user(id,title,modifydate)
  values(:new.ID,:new.TITLE,1,sysdate);
     elsif updating then
     update A.t_user t set t.title =:new.CTITLE,t.modifydate=sysdate where t.id=:new.ID;
     elsif deleting then
     update A.t_user t set t.deleted=1,t.modifydate=sysdate where t.id=:new.ID;
     end if;
end ;

但編譯的時候提示:

PL/SQL: ORA-01031: insufficient privileges 權限不足的意思
PL/SQL: SQL Statement ignored

既然提示權限不足,那麼我想一定是用戶B中的trigger對用戶A中的表是無權操作的,終於在google的幫助下,找到了解答,見解決問題的blog
解決方法如下:

grant update on A.t_user  to B
grant insert on A.t_user  to B

這樣就解決了