PostgreSQL では SQLServer や Oracle などと同じように VIEW を作成することができます。
また、一定の条件が整えば、その VIEW に対するデータの追加や更新などを行うことも可能です。
この記事では PostgreSQL の VIEW がデータの追加や更新が可能なのかどうかをチェックする方法を解説します。
PostgreSQLのViewが更新可能かどうかチェックする
PostgreSQL の View が更新可能かどうかチェックするには information_schema.views の is_updatable と is_insertable_info を参照することで判定を行えます。
SELECT * FROM information_schema.views WHERE table_schema = current_schema() ORDER BY table_name
上記の SQL を実行すると取得結果の中に is_updatable と is_insertable_info が取得され YES または NO が設定されています。
このフィールドが YES になっているものはデータの挿入、または更新が行える VIEW ということになります。
PostgreSQLの更新できるVIEWの条件
PostgreSQL の VIEW は更新可能なものになる条件が存在します。
- FROMリストに1つのテーブルだけが記述されている
- 定義の最上位レベルにWITH, DISTINCT, GROUP BY, HAVING, LIMIT, OFFSET,UNION, INTERSECT,EXCEPTが含まれていない
- SELECTに現れるカラムはテーブルのカラムへの単純な参照である(SUMのような関数などを含まない)
詳しくは以下の URL の Updatable Views を参照してください。
CREATE VIEW
CREATE VIEW CREATE VIEW — define a new view Synopsis CREATE ...
まとめ
PostgreSQL の VIEW は一定の条件を満たせば、通常のテーブルと同様に VIEW の元テーブルに対してデータの挿入や更新が可能になります。
挿入や更新が可能かどうかは information_schema.views を参照すれば判定することが可能です。