column_privilegesビューは、現在のユーザに対し、または、現在のユーザによって、列に与えられた権限を全て識別します。 列と許可投与者、許可受領者の組み合わせ毎に1行があります。 グループに与えられた権限はrole_column_grantsビューで識別されます。
PostgreSQLでは、個々の列ではなくテーブル全体にのみ権限を与えることができます。 従って、このビューには、table_privilegesと同じ情報が含まれ、単に、各適切なテーブル内の全ての列を1行で表現します。 しかし、SELECT、INSERT、UPDATE、REFERENCESといった列単位で設定可能な種類の権限のみを対象範囲とします。 将来起き得る開発に合うようにアプリケーションを作成したいのであれば、これらの権限の種類のいずれかを対象とする場合に、table_privilegesではなくこのビューを使用することが一般的に正しい方法です。
表 30-5. column_privileges の列
名前 | データ型 | 説明 |
---|---|---|
grantor | sql_identifier | 権限を与えたユーザの名前です。 |
grantee | sql_identifier | 権限を与えられたユーザもしくはグループの名前です。 |
table_catalog | sql_identifier | その列を含むテーブルを持つデータベースの名前です。(常に現在のデータベースです。) |
table_schema | sql_identifier | その列を含むテーブルを持つスキーマの名前です。 |
table_name | sql_identifier | その列を含むテーブルの名前です。 |
column_name | sql_identifier | 列の名前です。 |
privilege_type | character_data | 権限の種類です。 SELECT、INSERT、UPDATE、もしくは REFERENCES です。 |
is_grantable | character_data | この権限を付与可能な場合はYES、さもなくばNOです。 |
grantee列では、ユーザとグループの区別を行わないことに注意してください。 同じ名前のユーザとグループが存在する場合、残念ながら、これらを区別できません。 今後のPostgreSQLのバージョンでは、同じ名前を持つユーザとグループを禁止する可能性があります。