【问题标题】:Creating a trigger that grants a role to every new created user创建一个触发器,将角色授予每个新创建的用户
【发布时间】:2020-12-07 16:49:03
【问题描述】:

我在创建每次创建新用户时都会授予角色的触发器时遇到问题,我该怎么做?

CREATE TRIGGER  grant_role_to_user
AFTER  insert ON "here I need the right table" 
FOR EACH ROW
BEGIN
    GRANT role_1 to : NEW.USERNAME
END;
/

我尝试了表 all_users、dba_users;但它给了我一个错误“无法在此视图上创建触发器”

使用甲骨文 10g

【问题讨论】:

  • 您可以做的一种新方法是创建一个过程,如果您需要向用户授予授权,您将调用该过程,在该过程中执行创建用户,然后执行授予角色的权限。跨度>
  • 你想要的是一个系统触发器,它是on database。但是我不确定任何supplied DDL events 捕获用户的创建。

标签: sql oracle


【解决方案1】:

GRANT ROLE 包含到用于创建新用户的脚本中,即

create user        mike     identified by lion;
grant role_1 to    mike;

【讨论】:

  • 我明白了,是的,这也可以,但是我有什么办法可以使用触发器来做到这一点?还是做不到?
【解决方案2】:

我认为你不需要trigger

只需将此role 分配给public,每个用户都会分配此角色。(包括将来创建的用户)。但要注意你在做什么。你是认真的。

grant role_1 to public;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    相关资源
    最近更新 更多