视图 column_privileges 标出所有赋予当前用户的字段或者当前用户赋予的所有字段。 每个字段、授权人和被赋予权利的用户组成一行。给予一个组赋予的权限在 role_column_grants 里标出。
在 PostgreSQL 里,你只能在整个表上赋予权限, 而不是独立的字段。因此,这个视图包含和 table_privileges 一样的信息,只是每个合适的表里面的每个字段都有一行,但是它只覆盖那些对每字段的权限粒度有意义的权限:SELECT,INSERT, UPDATE,REFERENCES。 如果你想让你的应用可以适用于未来的开发,通常使用这个视图比用 table_privileges 好,只要你需要考虑上面的权限之一。
Table 31-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 版本可能禁止用户和组同名。