0

DB には、数十行を含むテーブルがあります。テーブルに適用される唯一の DML は次のとおりです。

1.挿入- 別のテーブルでのトリガーの実行により、行が挿入されます。

2.削除- スケジュールされた手順は、要求されたレコードを一時テーブルにロードし、これらのレコードを操作してから、特定のテーブルから削除します (手順が実行されるたびに一時テーブルにデータを入力するために、テーブルからの SELECT もあります)。 .

PK を使用してテーブルを作成しました。削除を実行すると、PK 列の ID を持つ行ごとにテーブルが削除されます。

明確にするために、テーブルにUPDATES操作はありません。

このようなテーブルを作成する際の特定のガイドラインや推奨事項はありますか (更新なし)。

答えてくれてありがとう。

4

2 に答える 2

1

更新するつもりのないテーブルについて特別なことは何もありません。

挿入、削除、および選択のみを許可する必要があるため、セキュリティ上の理由から必要に応じて、更新許可を全員に拒否することもできますが、設計について特別なことは何もなく、そうするように強制するものもありません。

于 2013-01-01T17:05:04.247 に答える
0

このテーブルを別のスキーマで作成し、更新を許可せずに選択、挿入、削除をスキーマに許可できるため、現在のスキーマから更新ステートメントを実行しようとしても実行されません。

以下に例を示します。

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テーブル名を使用できます

よろしく、

于 2013-01-01T18:54:44.500 に答える