こんにちは、SIer勤務のごりらSEです。
PostgreSQLでビュー(View)を使っていると、定義を変更したくなることがあります。そんなときに便利なのがCREATE OR REPLACE VIEWです。
本記事では、CREATE OR REPLACE VIEWの基本文法から使い道、注意点までをエンジニア向けに解説します。
CREATE OR REPLACE VIEW とは
CREATE OR REPLACE VIEWは、同じ名前のビューが既に存在している場合、そのビュー定義を上書きして再定義します。通常のCREATE VIEWは既存のビューがあるとエラーになりますが、OR REPLACEを付けることで上書きが可能になります。
注意点として、既存のビューと再定義のビューで生成する列の以下が同じである必要があります。
以下に当てはまる変更をした場合はエラーになります。
CREATE OR REPLACE VIEWを使うために、既存のビューと再定義のビューで同じである必要がある定義
・データ型
・列名
・項目数(ただし、最後尾に追加は可能)
また、所有者、権限などSELECT以外のルールなどほかのビュー属性はそのまま変更されません。
置き換えることができるユーザはビューの所有者(所有ロールのメンバである場合も含む)です。
基本構文
基本構文は以下の通りです。
CREATE OR REPACE VIEW [ビュー名] AS
SELECT [取得項目]
FROM [テーブル名]
WHERE [条件];
主な使い道
ビューの表示内容を変更したい場合に、削除せずに作り直すことができます。削除して作り直す場合は、DROP VIEW → CREATE VIEWの順で実行しますが、CREATE OR REPLACE VIEWのみの実行で済みます。
以下のような変更の場合にはCREATE OR REPLACE VIEWを使うことで作業を短縮できます。
CREATE OR REPLACE VIEWがおすすめな変更内容
・WHERE句の条件変更
・OUTER JOINやINNER JOINなど結合条件の変更
・ORDER BY句の変更
・項目の参照先変更(データ型が同じ場合のみ)
まとめ
CREATE OR REPLACE VIEWは、ビューを柔軟に管理する上で非常に便利な構文です。
特に依存関係のあるビュー定義を変更する場合は、「参照元のビューを削除→参照先のビューを削除→参照先のビューを作成→参照元のビューを作成」のように非常に手間がかかりますが、CREATE OR REPLACE VIEWのみで対応が可能となります。ただし、参照元のビュー定義への影響には十分注意が必要です。
定義の変更を安全かつ効率的に行いたい場合に積極的に活用しましょう。
コメント