ALTER VIEW

目的

ALTER VIEWを使用すると、無効なビューを明示的に再コンパイルしたり、ビューの制約を変更することができます。明示的に再コンパイルすると、実行前にコンパイル・エラーを検査できます。再コンパイルは、ビューの実表を変更した後で、その変更がビューまたはそのビューに依存するオブジェクトに影響していないかどうかを確認するときに便利です。

ALTER VIEWを使用して、制約のビューを定義、変更または削除することもできます。

この文を使用して既存のビュー定義を変更することはできません。また、ビューの実表に対するDDL変更によってビューが無効になる場合、この文を使用して無効なビューをコンパイルすることはできません。このような場合は、CREATE VIEWOR REPLACEキーワードを指定して使用し、ビューを再定義する必要があります。

ALTER VIEW文を発行した場合、指定したビューは有効か無効かにかかわらず再コンパイルされます。また、そのビューに依存するすべてのローカル・オブジェクトが無効になります。

1つ以上のマテリアライズド・ビューが参照しているビューを変更した場合、これらのマテリアライズド・ビューは無効になります。無効なマテリアライズド・ビューは、クエリー・リライトには使用できず、リフレッシュもできません。

関連項目:

前提条件

ビューが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER ANY TABLEシステム権限が必要です。

構文

セマンティクス

schema

ビューが含まれているスキーマを指定します。schemaを指定しない場合、ビューは自分のスキーマ内にあるとみなされます。

view

再コンパイルするビューの名前を指定します。

MODIFY CONSTRAINT句

MODIFY CONSTRAINT句を使用すると、既存のビュー制約のRELYまたはNORELY設定を変更できます。ビュー制約の概要は、「ビュー制約のノート」を参照してください。

制約の変更の制限事項

一意制約または主キー制約が参照整合性制約の一部である場合、外部キーを削除するか、viewの設定に合うように変更しないで、設定を変更することはできません。

ADD句

ADD句を使用すると、viewに制約を追加できます。ビュー制約および制限事項については、constraint」を参照してください。

DROP句

DROPを使用すると、既存のビューの制約を削除できます。

制約の削除の制限事項

一意制約または主キー制約がビューの参照整合性制約の一部である場合、それらの制約は削除できません。

COMPILE

COMPILEキーワードを指定すると、ビューを再コンパイルできます。

{ READ ONLY | READ WRITE }

これらの句は、エディショニング・ビューに対してのみ有効です。

  • READ ONLYを指定すると、エディショニング・ビューを更新禁止にできます。

  • READ WRITEを指定すると、読取り専用エディショニング・ビューを読取り/書込みステータスに戻すことができます。

これらの句を指定すると、依存オブジェクトは無効になりませんが、カーソルが無効になることがあります。

EDITIONABLE | NONEDITIONABLE

この句を使用すると、schemaのスキーマ・オブジェクト・タイプVIEWのエディショニングが後で有効化されたときに、そのビューをエディション・オブジェクトにするか非エディション・オブジェクトにするかを指定できます。デフォルトは、EDITIONABLEです。エディション・オブジェクトと非エディション・オブジェクトの変更の詳細は、『Oracle Database開発ガイド』を参照してください。

関連項目:

エディショニング・ビューの詳細は、「CREATE VIEW」を参照してください。

ビューの変更: 例

次の文は、ビューcustomer_ro (「読取り専用ビューの作成: 例」で作成)を再コンパイルします。

ALTER VIEW customer_ro
    COMPILE; 

customer_roの再コンパイル時にエラーが発生しなければ、customer_roは有効になります。再コンパイル・エラーが発生した場合はエラーが戻り、customer_roは無効のままとなります。

依存するオブジェクトもすべて無効になります。依存オブジェクトとは、customer_roを参照する、プロシージャ、ファンクション、パッケージ本体、ビューなどです。その後、最初に明示的に再コンパイルせずにこれらのオブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。