Синонимы и материализованное представление

  1. У меня есть две таблицы. а) студент б) ограниченный студент
    1. два пользователя а) админ б) пользователь
    2. один синонимы для обоих пользователей. в админе это относится к студенту, но для пользователя это относится к limited_student.

Я хочу создать материализованное представление MV . Код материализованного представления выглядит

CREATE MATERIALIZED VIEW SELECT TABLE_NAME,COLUMN_NAME FROM USER_TAB_COLUMNS;

такой, что если я подключен к администратору, то он должен ссылаться на студента, а для пользователя он должен ссылаться на disabled_student, передавая единственное синонимы имени stu. что-то вроде

SELECT TABLE_NAME,COLUMN_NAME FROM USER_TAB_COLUMNS E='st';

Результат, который я хотел получить при подключении к пользователю, должен давать столбцы таблицы limited_student. тогда как всякий раз, когда я подключался к администратору, он должен давать столбцы таблицы ученика

Я создал все вышеупомянутые объекты. Но материализованное представление не дает ожидаемого результата, как я хочу.

1 ответ

Вы можете использовать обычное представление, в котором вы можете объединить эти 2 таблицы и отфильтровать их по зарегистрированному пользователю. Также проверьте Oracle RLS (безопасность на уровне строк), https://docs.oracle.com/cd/B28359_01/network.111/b28529/intro.htm

Независимо от приложения и пользователя вы можете контролировать, каким должно быть предложение where. Таким образом, вы имеете гораздо более высокий контроль над записями, которые являются запросами.

Например,

Администратор
выберите * из сту;

Обычный пользователь
выберите * из сту;

Будет иметь совершенно разные результаты, в зависимости от предиката, установленного для RLS.

Другие вопросы по тегам