如果不使用GRANT SELECT ANY TABLE,我将如何仅从一个模式授予对所有表的访问权限。
实施例: 有三个用户。 u1,u2,u3。 u1需要访问u2所有的表,但不需要访问u3所拥有的表。 我可以循环遍历所有表并单独授予它们。 但是u2后来创建的新表呢? u1也需要这些表格。
我怎样才能自动授予这些新表?
答案 0 :(得分:1)
我相信您可以使用AFTER CREATE触发器执行此操作。以下示例不处理您的所有U1 / U2 / U3逻辑 - 您必须添加它 - 但它应该给您基本的想法:
CREATE TRIGGER AUTO_GRANT
AFTER CREATE ON SCHEMA
BEGIN
IF ORA_DICT_OBJ_TYPE = 'TABLE' THEN
EXECUTE IMMEDIATE 'GRANT SELECT ON ' || ora_dict_obj_owner || '.' ||
ora_dict_obj_name ' TO U1';
END IF;
END AUTO_GRANT;
祝你好运。