ALTER VIEWは、無効なビューを明示的に再コンパイルしたり、ビューの制約を変更するSQL文である。
ALTER VIEW 文で以下の事を行える。
ビュー定義に含まれる SELECT 文が正常に実行できない場合、ビューが無効な状態になる。無効なビューにアクセスすると、エラーが発生する。
SQL> SELECT * FROM example_view;
SELECT * FROM example_view
*
行1でエラーが発生しました。:
ORA-04063: view "TSUKA.EXAMPLE_VIEW"にエラーがあります。
この場合、ビュー定義を変更したうえ、再コンパイルすると、有効な状態になる。
無効なビューを明示的に再コンパイルする。
ALTER VIEW [schema.]view COMPILE
SQL> ALTER VIEW tsuka.example COMPILE;
SQL> ALTER VIEW example COMPILE;
ビューに主キー制約を追加する。
ALTER VIEW view ADD CONSTRAINT constraint PRIMARY KEY (column, ...)
ビューに一意制約を追加する。
ALTER VIEW view ADD CONSTRAINT constraint UNIQUE (column, ...)
ビューに外部キー制約を追加する。
ALTER VIEW view ADD CONSTRAINT constraint FOREIGN KEY (column, ...) REFERENCES schema.object (column, ...)
ビューに一CHECK制約を追加する。
ALTER VIEW view ADD CONSTRAINT constraint CHECK (condition)
ビューの制約を変更する。
ALTER VIEW view MODIFY CONSTRAINT constraint
ビューから制約を削除する。
ALTER VIEW view DROP CONSTRAINT constraint
ビューから主キーを削除する。
ALTER VIEW view DROP PRIMARY KEY
ビューから一意制約を削除する。
ALTER VIEW view DROP UNIQUE (column, ...)
ALTER VIEW文を使用して、既存のビュー定義(SELECT文)を変更することはできない。
ビューを再定義する場合は、CREATE OR REPLACE VIEW文を使用する。
自分のスキーマ内にあるビューを変更するには、とくに権限は必要ない。
変更するビューが自分のスキーマ内にない場合は、ALTER ANY TABLEシステム権限が必要である。
MySQL のビューを変更する。
ALTER
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = user]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
PostgreSQL のビューを変更する。
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
SQL Server のビューを変更する。
ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]
[ WITH view_attribute [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ]
Oracle 2023. ALTER VIEW ステートメント