【发布时间】:2011-11-28 19:17:54
【问题描述】:
this post 描述了设置触发器以在登录时更改架构。有没有办法检查用户的角色以查看它是否匹配特定角色而不是用户名本身?
我尝试在 when 子句中对 user_role_privs 进行子查询,但它不允许这样做。想法?
更新
这是我根据 Yahia 建议的解决方案使用的。它似乎没有工作。当我使用具有该角色的用户登录时,它仍然无法识别前面没有架构名称的表。
CREATE OR REPLACE TRIGGER db_logon
AFTER logon ON DATABASE
DECLARE
v_count NUMBER;
BEGIN
SELECT COUNT(*) INTO v_count FROM user_role_privs WHERE granted_role = 'USER_ROLE' and username <> 'DEFAULT_SCHEMA';
IF v_count > 0 THEN
execute immediate 'ALTER SESSION SET CURRENT_SCHEMA = DEFAULT_SCHEMA';
END IF;
END;
【问题讨论】: