我可以防止更新或删除 Oracle 数据库吗?
Can I prevent update or delete on an Oracle DB?
我必须实施财务应用程序。其中一项验收标准是:
"The data may never change."
因此我需要防止对数据库进行 update
和 delete
操作,因为它将部署在客户拥有和管理的机器上。
这可能吗?也许有触发器?如果没有,有没有其他数据库可以防止update
和delete
?
最简单的方法是通过角色,例如查询角色。将表列表中的 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.
的数据
我必须实施财务应用程序。其中一项验收标准是:
"The data may never change."
因此我需要防止对数据库进行 update
和 delete
操作,因为它将部署在客户拥有和管理的机器上。
这可能吗?也许有触发器?如果没有,有没有其他数据库可以防止update
和delete
?
最简单的方法是通过角色,例如查询角色。将表列表中的 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.