繁体   English   中英

我可以防止在Oracle DB上进行更新或删除吗?

[英]Can I prevent update or delete on an Oracle DB?

我必须执行财务申请。 接受标准之一是:

“数据可能永远不会改变。”

因此,我需要防止对数据库进行updatedelete操作,因为它将部署在客户拥有和管理的计算机上。

这有可能吗? 也许有触发器? 如果不是,是否还有其他数据库可以阻止updatedelete

最简单的方法是通过角色,例如查询角色。 将表列表上的select授予该角色,然后将该角色授予应用程序的用户。 您当然可以创建其他角色,例如具有更新和删除特权的管理员角色,稍后将在需要时授予它们。

例:

CREATE ROLE FIN_APP_INS_SEL_ROLE;                                   
GRANT INSERT, SELECT on <table1> to FIN_APP_INS_SEL_ROLE;
GRANT INSERT, SELECT on <table2> to FIN_APP_INS_SEL_ROLE;
GRANT CONNECT, FIN_APP_INS_SEL_ROLE to <app_user>; 

您也可以将表空间设为只读,

ALTER TABLESPACE <name> READ ONLY;

或整个数据库为只读。

ALTER DATABASE OPEN READ ONLY;

事实证明这是不可能的。

如果没有UPDATE就无法授予INSERT特权。 据我了解, INSERT特权被解释为可能更改该表的数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM