ALTER VIEW
目的
ALTER
VIEW
を使用すると、無効なビューを明示的に再コンパイルしたり、ビューの制約を変更することができます。明示的に再コンパイルすると、実行前にコンパイル・エラーを検査できます。再コンパイルは、ビューの実表を変更した後で、その変更がビューまたはそのビューに依存するオブジェクトに影響していないかどうかを確認するときに便利です。
ALTER
VIEW
を使用して、制約のビューを定義、変更または削除することもできます。
この文を使用して既存のビュー定義を変更することはできません。また、ビューの実表に対するDDL変更によってビューが無効になる場合、この文を使用して無効なビューをコンパイルすることはできません。このような場合は、CREATE
VIEW
にOR
REPLACE
キーワードを指定して使用し、ビューを再定義する必要があります。
ALTER
VIEW
文を発行した場合、指定したビューは有効か無効かにかかわらず再コンパイルされます。また、そのビューに依存するすべてのローカル・オブジェクトが無効になります。
1つ以上のマテリアライズド・ビューが参照しているビューを変更した場合、これらのマテリアライズド・ビューは無効になります。無効なマテリアライズド・ビューは、クエリー・リライトには使用できず、リフレッシュもできません。
関連項目:
-
ビューの再定義の詳細は、「CREATE VIEW」を参照してください。無効なマテリアライズド・ビューの再検証の詳細は、「ALTER MATERIALIZED VIEW」を参照してください。
-
データ・ウェアハウスの概要は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
-
スキーマ・オブジェクト間の依存性については、『Oracle Database概要』を参照してください。
前提条件
ビューが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER
ANY
TABLE
システム権限が必要です。
構文
annotations_clause::=
annotations_clause
の完全な構文およびセマンティクスについては、「annotations_clause」を参照してください。
セマンティクス
IF EXISTS
IF EXISTS
は、既存の表を変更する場合に指定します。
ALTER VIEW
にIF NOT EXISTS
を指定すると、ORA-11544: Incorrect IF EXISTS clause for ALTER/DROP statement
が発生します。
schema
ビューが含まれているスキーマを指定します。schema
を指定しない場合、ビューは自分のスキーマ内にあるとみなされます。
view
再コンパイルするビューの名前を指定します。
MODIFY CONSTRAINT句
MODIFY
CONSTRAINT
句を使用すると、既存のビュー制約のRELY
またはNORELY
設定を変更できます。ビュー制約の概要は、「ビュー制約のノート」を参照してください。
制約の変更の制限事項
一意制約または主キー制約が参照整合性制約の一部である場合、外部キーを削除するか、view
の設定に合うように変更しないで、設定を変更することはできません。
ADD句
ADD
句を使用すると、view
に制約を追加できます。ビュー制約および制限事項については、「constraint」を参照してください。
{ READ ONLY | READ WRITE }
これらの句は、エディショニング・ビューに対してのみ有効です。
-
READ
ONLY
を指定すると、エディショニング・ビューを更新禁止にできます。 -
READ
WRITE
を指定すると、読取り専用エディショニング・ビューを読取り/書込みステータスに戻すことができます。
これらの句を指定すると、依存オブジェクトは無効になりませんが、カーソルが無効になることがあります。
EDITIONABLE | NONEDITIONABLE
この句を使用すると、schema
のスキーマ・オブジェクト・タイプVIEW
のエディショニングが後で有効化されたときに、そのビューをエディション・オブジェクトにするか非エディション・オブジェクトにするかを指定できます。デフォルトは、EDITIONABLE
です。エディション・オブジェクトと非エディション・オブジェクトの変更の詳細は、『Oracle Database開発ガイド』を参照してください。
関連項目:
エディショニング・ビューの詳細は、「CREATE VIEW」を参照してください。
annotations_clause
注釈句のセマンティクスの詳細は、「annotations_clause」を参照してください。
ALTER
文では、ビュー・レベルの注釈のみを変更できます。列レベルの注釈を削除するには、ビューを削除して再作成する必要があります。
例
ビューの変更: 例
次の文は、ビューcustomer_ro
(「読取り専用ビューの作成: 例」で作成)を再コンパイルします。
ALTER VIEW customer_ro COMPILE;
customer_ro
の再コンパイル時にエラーが発生しなければ、customer_ro
は有効になります。再コンパイル・エラーが発生した場合はエラーが戻り、customer_ro
は無効のままとなります。
依存するオブジェクトもすべて無効になります。依存オブジェクトとは、customer_ro
を参照する、プロシージャ、ファンクション、パッケージ本体、ビューなどです。その後、最初に明示的に再コンパイルせずにこれらのオブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。
注釈の追加および削除: 例
次の例では、ビューMView1
から注釈Title
を削除し、注釈Identity
を追加します。
ALTER VIEW HighWageEmp ANNOTATIONS(DROP Title, ADD Identity);