0
  1. 私は2つのテーブルを持っています。a)学生 b)restricted_student。
    1. 2 人のユーザー a) 管理者 b) ユーザー
    2. 両方のユーザーの1 つの同義語stu 。管理者では学生を指しますが、ユーザーの場合はrestricted_studentを指します。

マテリアライズドビュー 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 テーブル列を与える必要があります。一方、管理者に接続するたびに、学生テーブルの列を指定する必要があります。

上記のすべてのオブジェクトを作成しましたが、マテリアライズド ビューで期待どおりの結果が得られません。

4

1 に答える 1

0

これらの 2 つのテーブルを結合し、ログインしているユーザーでフィルタリングできる通常のビューを使用できます。また、Oracle RLS (行レベル セキュリティ)、https: //docs.oracle.com/cd/B28359_01/network.111/b28529 を確認してください。 /intro.htm

アプリケーションとユーザーに関係なく、where 句のあり方を制御できます。そうすれば、クエリであるレコードをより細かく制御できます。

例えば、

管理者ユーザー
は stu から * を選択します。

通常のユーザー
は stu から * を選択します。

RLS に設定した述語に基づいて、まったく異なる結果が得られます。

于 2016-02-26T18:18:39.237 に答える