我可以防止更新或删除 Oracle 数据库吗?

Can I prevent update or delete on an Oracle DB?

我必须实施财务应用程序。其中一项验收标准是:

"The data may never change."

因此我需要防止对数据库进行 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;

原来是不可能的

无法授予 INSERT 权限而不允许 UPDATE。据我了解,INSERT 特权被解释为 可能会更改 table.

的数据