創建oracle trigger提示ora:01031錯誤的解決辦法
十一月 21st, 2009 by 寻道者
有這樣一個需求:用戶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
這樣就解決了