32.7. column_privileges

column_privilegesビューは、現在のユーザに対し、または、現在のユーザによって、列に与えられた権限をすべて識別します。 列と許可投与者、許可受領者の組み合わせ毎に1行があります。 グループに与えられた権限はrole_column_grantsビューで識別されます。

PostgreSQLでは、個々の列ではなくテーブル全体にのみ権限を与えることができます。 従って、このビューには、table_privilegesと同じ情報が含まれ、単に、各適切なテーブル内のすべての列を1行で表現します。 しかし、SELECTINSERTUPDATEREFERENCESといった列単位で設定可能な種類の権限のみを対象範囲とします。 将来起き得る開発に合うようにアプリケーションを作成したいのであれば、これらの権限の種類のいずれかを対象とする場合に、table_privilegesではなくこのビューを使用することが一般的に正しい方法です。

表 32-5. column_privileges の列

名前データ型説明
grantorsql_identifier権限を与えたユーザの名前です。
granteesql_identifier権限を与えられたユーザもしくはグループの名前です。
table_catalogsql_identifierその列を含むテーブルを持つデータベースの名前です。(常に現在のデータベースです。)
table_schemasql_identifierその列を含むテーブルを持つスキーマの名前です。
table_namesql_identifierその列を含むテーブルの名前です。
column_namesql_identifier列の名前です。
privilege_typecharacter_data権限の種類です。 SELECTINSERTUPDATE、もしくは REFERENCES です。
is_grantablecharacter_dataこの権限を付与可能な場合はYES、さもなくばNOです。

grantee列では、ユーザとグループの区別を行わないことに注意してください。 同じ名前のユーザとグループが存在する場合、残念ながら、これらを区別できません。 今後のPostgreSQLのバージョンでは、同じ名前を持つユーザとグループを禁止する可能性があります。