columns #
columnsビューには、データベース内の全てのテーブル列(もしくはビューの列)についての情報が含まれます。
システム列(ctidなど)は含まれません。
現在のユーザが(所有者である、権限を持っているなどの方法で)アクセスできる列のみが示されます。
  
表37.15 columnsの列
| 列 型 説明 | 
|---|
| 
        テーブルを持つデータベースの名前です(常に現在のデータベースです)。 | 
| 
        テーブルを持つスキーマの名前です。 | 
| 
        テーブルの名前です。 | 
| 
        列の名前です。 | 
| 
        テーブル内の列の位置(1から始まる序数)です。 | 
| 
        列のデフォルト式です。 | 
| 
        
列がNULLを持つことができる場合は | 
| 
        
組み込み型の場合、列のデータ型、配列の場合、 | 
| 
        
 | 
| 
        
 | 
| 
        
 | 
| 
        
 | 
| 
        
 | 
| 
        
 | 
| 
        
 | 
| 
        
PostgreSQLで利用できない機能に適用されるものです。(時間間隔型の属性の秒未満の精度については | 
| 
        PostgreSQLでは利用できない機能に適用されるものです。 | 
| 
        PostgreSQLでは利用できない機能に適用されるものです。 | 
| 
        PostgreSQLでは利用できない機能に適用されるものです。 | 
| 
        列の照合を含むデータベース(常に現在のデータベース)の名前で、デフォルトであるか属性のデータ型が照合可能でない場合はNULLです。 | 
| 
        属性の照合を含むスキーマの名前で、デフォルトであるか属性のデータ型が照合可能でない場合はNULLです。 | 
| 
        列の照合の名前で、デフォルトであるか列のデータ型が照合可能でない場合はNULLです。 | 
| 
        列がドメイン型の場合、そのドメインを定義したデータベースの名前です (常に現在のデータベースです)。 さもなくば、NULLです。 | 
| 
        列がドメイン型の場合、そのドメインを定義したスキーマの名前です。 さもなくば、NULLです。 | 
| 
        列がドメイン型の場合、そのドメインの名前です。 さもなくば、NULLです。 | 
| 
        列データ型(もし適用されていたら背後にあるドメインの型)を定義したデータベースの名前です(常に現在のデータベースです)。 | 
| 
        列データ型(もし適用されていたら背後にあるドメインの型)を定義したスキーマの名前です。 | 
| 
        列データ型(もし適用されていたら背後にあるドメインの型)の名前です。 | 
| 
        PostgreSQLでは利用できない機能に適用されるものです。 | 
| 
        PostgreSQLでは利用できない機能に適用されるものです。 | 
| 
        PostgreSQLでは利用できない機能に適用されるものです。 | 
| 
        常にNULLです。PostgreSQLでは配列の次数は無制限だからです。 | 
| 
        列のデータ型記述子の、テーブルに属するデータ型記述子内で一意な識別子です。 この識別子のインスタンスを結合する時に、主に有用です。 (識別子の書式仕様は定義されておらず、今後のバージョンで同一性を維持する保証もありません。) | 
| 
        PostgreSQLでは利用できない機能に適用されるものです。 | 
| 
        
列が識別列であれば | 
| 
        
列が識別列であれば、列の定義を反映して | 
| 
        列が識別列であれば内部シーケンスの開始値、そうでなければNULLです。 | 
| 
        列が識別列であれば内部シーケンスの増分、そうでなければNULLです。 | 
| 
        列が識別列であれば内部シーケンスの最大値、そうでなければNULLです。 | 
| 
        列が識別列であれば内部シーケンスの最小値、そうでなければNULLです。 | 
| 
        
列が識別列であれば、内部シーケンスが周回する場合に | 
| 
        
列が生成された列であれば | 
| 
        列が生成された列であれば生成式、そうでなければNULLです。 | 
| 
        
列が更新可能な場合 | 
データ型は、複数の方法でSQLにより定義でき、さらにPostgreSQLにはデータ型定義に別の方法も追加されていますので、情報スキーマにおけるデータ型表現は多少難しくなっています。
data_type列は、列の背後にある組み込み型を識別できるようになっていなければなりません。
PostgreSQLでは、型がpg_catalogシステムカタログスキーマで定義されていることを意味します。
よく知られた組み込み型を特別に扱うことができるアプリケーション(例えば、数値型を異なる書式にする、精度列内のデータを使用する)の場合、この列が有用な場合があります。
udt_name、udt_schema、udt_catalog列は、たとえドメインに基づいた列であっても、常に列の背後にあるデータ型を識別します
(PostgreSQLは、組み込み型をユーザ定義型と同様に扱いますので、ここには組み込み型も現れます。これは標準SQLからの拡張です)。
アプリケーションが型に従って異なる処理を行う場合、これらの列を使用しなければなりません。
このような場合、本当はドメインに基づいている列なのかどうかが関係ないからです。
列がドメインに基づく場合、ドメインの識別子はdomain_name、domain_schema、domain_catalog列に保持されます。
関連するデータ型と列の組み合わせを作りたい場合や、ドメインを別の型として扱いたい場合は、coalesce(domain_name, udt_name)などとすることができます。