ALTER VIEW

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
schema
再コンパイルするビューのスキーマを指定する。
SQL> ALTER VIEW tsuka.example COMPILE;
view
再コンパイルするビューを指定する。
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)
constraint
追加する整合性制約を指定する。
column
列を指定する。
conditon
CHECK制約のチェック内容を指定する。

制約の変更

ビューの制約を変更する。

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システム権限が必要である。

関連SQL

CREATE VIEW
ビューを作成する。
DROP VIEW
ビューを削除する。

MySQL

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

PostgreSQL のビューを変更する。

ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression

SQL Server

SQL Server のビューを変更する。

ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ] 
  [ WITH view_attribute [ ,...n ] ]
  AS select_statement
  [ WITH CHECK OPTION ]

参考文献

Oracle 2023. ALTER VIEW ステートメント