我想设置grant / revoke并在oracle apex中创建角色 . 但是我不希望为用户执行此操作,但是对于表中的数据,例如基于表中的Id,我想要撤消其更新任何数据的权限 . 这是可能的,这是最好的方法 .
您不能对表中的特定行执行此操作 . 您只能为表格发出GRANT / REVOKE .
http://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqljgrant.html
您必须在应用程序(PL / SQL)级别处理表中特定数据的更新 .
有两种选择:
你可以使用Oracle Label Security .
您可以在表格顶部创建一个视图,该视图将基于当前用户的 EMPLOYEE_ID 进行查询 .
EMPLOYEE_ID
一些注意事项,过去曾在PostgreSQL上做过类似的事情 .
可以在此类事物的数据之上创建视图 .
行级安全性是您通常想要做的事情 . 有关教程,请参阅http://www.dba-oracle.com/concepts/restricting_access.htm .
第一种方法涉及第二种方法的所有问题,然后是一些问题 . 原因是您必须在您的视图中编写策略引擎 . 在第二种方法中,您可以获得一个策略引擎,您只需应用策略即可 .
经验中的一些注释:
如果您要一次查看多行,确实要避免从表中的其他行查找权限数据 .
在实现权限检查之前,请仔细考虑权限检查的性能影响 .
这类事情通常是性能问题,需要一些时间才能解决 . 随着您没有想到的用例变得重要,请做好长时间的优化准备 .
3 回答
您不能对表中的特定行执行此操作 . 您只能为表格发出GRANT / REVOKE .
http://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqljgrant.html
您必须在应用程序(PL / SQL)级别处理表中特定数据的更新 .
有两种选择:
你可以使用Oracle Label Security .
您可以在表格顶部创建一个视图,该视图将基于当前用户的
EMPLOYEE_ID
进行查询 .一些注意事项,过去曾在PostgreSQL上做过类似的事情 .
可以在此类事物的数据之上创建视图 .
行级安全性是您通常想要做的事情 . 有关教程,请参阅http://www.dba-oracle.com/concepts/restricting_access.htm .
第一种方法涉及第二种方法的所有问题,然后是一些问题 . 原因是您必须在您的视图中编写策略引擎 . 在第二种方法中,您可以获得一个策略引擎,您只需应用策略即可 .
经验中的一些注释:
如果您要一次查看多行,确实要避免从表中的其他行查找权限数据 .
在实现权限检查之前,请仔细考虑权限检查的性能影响 .
这类事情通常是性能问题,需要一些时间才能解决 . 随着您没有想到的用例变得重要,请做好长时间的优化准备 .