このテーブルを別のスキーマで作成し、更新を許可せずに選択、挿入、削除をスキーマに許可できるため、現在のスキーマから更新ステートメントを実行しようとしても実行されません。
以下に例を示します。
connect system/manager
grant connect, resource to user1 identified by user1;
grant connect, resource to user2 identified by user2;
disconnect
connect user1/user1
create table user1.table1(col1 number, col1_desc varchar2(16));
grant select, insert, delete on user1.table1 to user2;
disconnect
conn user2/user2
select * from user1.table1
insert into user1.table1 values (1, 'insert-user2');
commit;
insert into user1.table1 values (2, 'insert-user2');
commit;
delete from user1.table1 t where t.col1 = 2;
commit;
update user1.table1 t set t.col1_desc = 'ins-user2' where t.col1 = 1;
commit;
-- last update statement will throw ORA-01031: insufficient privileges
注:user1.table1のシノニムを使用して、user2から直接table1テーブル名を使用できます
よろしく、