5

マテリアライズド ビューが更新されず、コンパイル エラーが発生するという問題が発生しました。上級開発者の 1 人は、マテリアライズド ビューをコンパイルするようにヒキガエルに指示することで、それを修正する方法を見つけたところだと言います。

だから私の質問は非常に簡単です: 更新と「コンパイル」の違いは何ですか?

4

3 に答える 3

8

マテリアライズド ビューの更新はデータ操作です。MV のデータは、ビューの作成時に指定されたとおりに最新の状態に更新されます (高速更新、完全更新など)。

MV をコンパイルすると、Oracle はビューの基になっているクエリを再検証します。MV の基になっている 1 つ以上の基になるオブジェクトの変更により、MV が無効になる場合があります。

于 2011-09-26T22:53:53.370 に答える
5

更新により、マテリアライズド ビューが保持するデータが更新されます。マテリアライズド ビューの定義が無効な場合、これは実行できません。

コンパイルは、具体化されたビューの定義を検証します。つまり、SQL が有効であり、それが依存するオブジェクトが存在することを検証します 。

于 2011-09-26T22:55:11.550 に答える