在设计无法接收更新的表时,我应该注意哪些性能因素

时间:2013-01-01 16:56:19

标签: sql database-design

我们的数据库中有一个包含几十行的表。 应用于表格的唯一DML是:

1. 插入 - 由于在另一个表上执行触发而插入行。

2. 删除 - 调度过程正在将请求的记录加载到临时表,使用这些记录,然后从特定表中删除它们(表中还有一个SELECT用于填充每次程序运行时临时表)。

我们用PK构建表,当我们运行删除时, 使用PK列的ID逐行删除该表。

只是为了澄清,我们在桌面上没有任何 UPDATES 操作。

创建此类表(没有更新)时是否有任何具体的指导方针或建议?

谢谢你的回答。

2 个答案:

答案 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表名

的问候,