我们的数据库中有一个包含几十行的表。 应用于表格的唯一DML是:
1. 插入 - 由于在另一个表上执行触发而插入行。
2. 删除 - 调度过程正在将请求的记录加载到临时表,使用这些记录,然后从特定表中删除它们(表中还有一个SELECT用于填充每次程序运行时临时表)。
我们用PK构建表,当我们运行删除时, 使用PK列的ID逐行删除该表。
只是为了澄清,我们在桌面上没有任何 UPDATES 操作。
创建此类表(没有更新)时是否有任何具体的指导方针或建议?
谢谢你的回答。
答案 0 :(得分:1)
您不打算更新的表没有什么特别之处。
如果您出于安全原因需要,可以拒绝更新每个人的权限,因为您实际上只想允许插入,删除和选择,但设计没有什么特别之处,也没有任何强迫您这样做。
答案 1 :(得分: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表名的问候,