3
有this post,它描述了在登录时设置触发器以更改架构。有没有办法检查用户的角色,看它是否与特定角色而不是用户名本身相匹配?Oracle:根据角色更改架构
我试图对when子句中的user_role_privs做一个子查询,但它不允许这样做。想法?
UPDATE
这是我使用的每叶海亚的建议的解决方案是什么。它似乎并没有工作。当我与具有角色的用户一起登录时,它仍然无法识别没有之前的模式名称的表。
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;
一旦你说出来,这似乎很愚蠢明显。我有一个问题让它工作。使用我正在使用的内容更新帖子。 – MacAnthony
它在我删除if语句并且只是始终将其强制到模式时起作用。不过,看不清if语句有什么问题。当我作为用户运行时,select count返回1。 – MacAnthony
出于某种原因,即使整个查询在以用户身份登录时工作,但我从where子句中删除了AND用户名<>'DEFAULT_SCHEMA'后,便得到了工作。考虑到它是固定的。谢谢 – MacAnthony