我想创建一个物化视图MV。 物化视图的代码看起来像
CREATE MATERIALIZED VIEW SELECT TABLE_NAME,COLUMN_NAME FROM USER_TAB_COLUMNS;
如果我连接到管理员,那么它应该引用学生,对于用户,它应该通过传递唯一的同义词名称stu来引用restricted_student。
之类的东西SELECT TABLE_NAME,COLUMN_NAME FROM USER_TAB_COLUMNS E='st';
当我连接到用户时,我想要的结果应该是 restricted_student表格列。每当我连接到管理员时,它应该给出学生表格列。
我创建了所有上述对象。但是物化视图没有按照我的意愿给出预期的结果。
答案 0 :(得分:0)
您可以使用普通视图,您可以将这两个表联合起来并由登录的用户进行过滤。 另请检查Oracle RLS(行级安全性),https://docs.oracle.com/cd/B28359_01/network.111/b28529/intro.htm
无论应用程序和用户如何,您都可以控制where子句的方式。这样,您可以更好地控制查询记录。
例如,
管理员用户
select * from stu;
普通用户
select * from stu;
根据您为RLS设置的谓词,会有完全不同的结果。