Symfoware Serverのシステムの情報やデータベースのオブジェクトの情報を取得するために、システムカタログが利用できます。
しかし、システムカタログは、今後のSymfoware Serverのバージョンアップにともない変更されることがあります。また、システムカタログはSymfoware Serverに固有の情報を返却するものが多く存在します。
そのため、可能な限り、標準SQLで定義されている情報スキーマ(information_schema)を参照するようにしてください。ただし、列が追加されることもあるため、選択リストに“*”を指定した問い合わせを使用しないようにすることが必要です。
参照
情報スキーマについては、“PostgreSQL文書”の“クライアントインタフェース”の“情報スキーマ”を参照してください。
情報スキーマにはない固有の情報を取得するには、システムカタログを参照する必要がありますが、この場合は、システムカタログを参照するビューを定義し、アプリケーションではシステムカタログを直接参照せずに、ビューを参照するようにしてください。ただし、ビューの定義では、ビュー名の後ろに明示的に列名を指定して定義する必要があります。
以下はビューの定義例と使用例です。
例
CREATE VIEW my_tablespace_view(spcname) AS SELECT spcname FROM pg_tablespace; SELECT * FROM my_tablespace_view V1, pg_tables T1 WHERE V1.spcname = T1.tablespace;
これにより、システムカタログに変更が入った場合、アプリケーションを変更することなく、ビューを変更するだけで対応することができます。
以下は、ビューを再定義して変更が入らなかったかのように対処している例です。
列名 spcname がspacename に変更されたことにともない、システムカタログ pg_tablespaceを再定義しています。
例
DROP VIEW my_tablespace_view; CREATE VIEW my_tablespace_view(spcname) AS SELECT spacename FROM pg_tablespace;