31.7. column_privileges

视图 column_privileges 标出所有赋予当前用户的字段或者当前用户赋予的所有字段。 每个字段、授权人和被赋予权利的用户组成一行。给予一个组赋予的权限在 role_column_grants 里标出。

PostgreSQL 里,你只能在整个表上赋予权限, 而不是独立的字段。因此,这个视图包含和 table_privileges 一样的信息,只是每个合适的表里面的每个字段都有一行,但是它只覆盖那些对每字段的权限粒度有意义的权限:SELECTINSERTUPDATEREFERENCES。 如果你想让你的应用可以适用于未来的开发,通常使用这个视图比用 table_privileges 好,只要你需要考虑上面的权限之一。

Table 31-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 版本可能禁止用户和组同名。