首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动执行权限

自动执行权限
EN

Stack Overflow用户
提问于 2015-09-22 21:39:24
回答 1查看 45关注 0票数 1

我使用SQL Developer与Oracle连接。

我尝试“自动化”权限,这意味着我不需要一直为每个表和每个用户键入每个GRANT注释。所以我的想法是做三张桌子。一个拥有存在于数据库中的表名和一个表组。一个拥有所有用户,另一个拥有权限组的权限。

现在我试着自动化它,把它放在一个授权中。像这样:

代码语言:javascript
复制
GRANT (Select rights from DB_Rights where rightgroup = 1)
    ON (Select tables from DB_Tables where Tablegroup = 1) to (User)

但它并没有起作用。我的错误在哪里?或者这是不可能的?有没有另一种选择来“自动化”它?

EN

回答 1

Stack Overflow用户

发布于 2015-09-22 23:19:06

解决方案可能类似于此。您仍然需要编写正确的SELECT查询,但您应该了解它是如何工作的。

代码语言:javascript
复制
BEGIN
   FOR aGRANT IN (
       Select rights, tables, User_NAME 
       from DB_Rights 
          CROSS JOIN DB_Tables 
       where Tablegroup = 1 AND rightgroup = 1 AND Tablegroup = 1) 
    LOOP
      EXECUTE IMMEDIATE 'GRANT '||aGRANT.rights||' ON '||aGRANT.tables||' TO '||aGRANT.User_NAME;
   END LOOP;
END;

为了验证您的命令,请用DBMS_OUTPUT.PUT_LINE(...);替换EXECUTE IMMEDIATE ...

一般而言,请考虑tbone所建议的ROLES的用法。但是,在某些情况下,角色不适用,或者最终以“自动授予角色”而不是“自动授予用户”告终。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32718469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档