我可以阻止在Oracle数据库上进行更新或删除吗



我必须实现一个财务应用程序。验收标准之一是:

"数据可能永远不会改变。">

因此,我需要防止对数据库执行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特权被解释为可能会更改该表的数据

相关内容

  • 没有找到相关文章

最新更新