更新时间:2024-11-27 GMT+08:00

访问权限查询函数

has_any_column_privilege(user, table, privilege)

描述:指定用户是否有访问表任何列的权限。

参数:user可以通过名字(text类型)或OID来声明。table可以通过名字(text类型)或者OID来声明。privilege使用文本字符串(text类型)来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFERENCES,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

has_any_column_privilege(table, privilege)

描述:当前用户是否有访问表任何列的权限。

参数:table可以通过名字(text类型)或者OID来声明。privilege使用文本字符串(text类型)来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFERENCES,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。

拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has_table_privilege参数相同,has_any_column_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。

has_column_privilege(user, table, column, privilege)

描述:指定用户是否有访问列的权限。

参数:user可以通过名字(text类型)或OID来声明。table可以通过名字(text类型)或者OID来声明。column可以通过列名(text类型)或属性号(smallint类型)来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFERENCES,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

has_column_privilege(table, column, privilege)

描述:当前用户是否有访问列的权限。

参数:table可以通过名字(text类型)或者OID来声明。column可以通过列名(text类型)或属性号(smallint类型)来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFERENCES,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

备注:has_column_privilege检查用户是否以特定方式访问一列。其参数类似于has_table_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。

拥有表的表级别权限则隐含的拥有该表每列的列级权限。

has_database_privilege(user, database, privilege)

描述:指定用户是否有访问数据库的权限。

参数:user可以通过名字(text类型)或OID来声明。database可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、REFERENCES,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

has_database_privilege(database, privilege)

描述:当前用户是否有访问数据库的权限。

参数:database可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值CREATE、CONNECT、TEMPORARY或TEMP,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

备注:has_database_privilege检查用户是否能以在特定方式访问数据库。其参数类似has_table_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY或TEMP(等价于TEMPORARY)的一些组合。

has_foreign_data_wrapper_privilege(user, fdw, privilege)

描述:指定用户是否有访问外部数据封装器的权限。

参数:user可以通过名字(text类型)或OID来声明。fdw表示外部数据封装器,可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是USAGE。

参数fdw,表示外部数据封装器,取值范围为外部数据封装器名字或ID。

返回类型:boolean

has_foreign_data_wrapper_privilege(fdw, privilege)

描述:当前用户是否有访问外部数据封装器的权限。

参数:fdw表示外部数据封装器,可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是USAGE。

返回类型:boolean

备注:has_foreign_data_wrapper_privilege检查用户是否能以特定方式访问外部数据封装器。其参数类似has_table_privilege。访问权限类型必须是USAGE。

has_function_privilege(user, function, privilege)

描述:指定用户是否有访问函数的权限。

参数:user可以通过名字(text类型)或OID来声明。function可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是EXECUTE。

返回类型:boolean

has_function_privilege(function, privilege)

描述:当前用户是否有访问函数的权限。

参数:function可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是EXECUTE。

返回类型:boolean

备注:has_function_privilege检查当前用户是否能以指定方式访问指定函数。其参数类似has_table_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考对象标识符类型)。访问权限类型必须是EXECUTE。

has_language_privilege(user, language, privilege)

描述:指定用户是否有访问语言的权限。

参数:user可以通过名字(text类型)或OID来声明。language可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是USAGE。

返回类型:boolean

has_language_privilege(language, privilege)

描述:当前用户是否有访问语言的权限。

参数:language可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串必须是USAGE。

返回类型:boolean

备注:has_language_privilege检查用户是否能以特定方式访问过程语言。其参数类似has_table_privilege。访问权限类型必须是USAGE。

has_schema_privilege(user, schema, privilege)

描述:指定用户是否有访问模式的权限。

参数:user可以通过名字(text类型)或OID来声明。schema可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值CREATE、USAGE,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

has_schema_privilege(schema, privilege)

描述:当前用户是否有访问模式的权限。

参数:schema可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值CREATE、USAGE,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

备注:has_schema_privilege检查用户是否能以特定方式访问指定模式。其参数类似has_table_privilege。访问权限类型必须是CREATE或USAGE的一些组合。

has_server_privilege(user, server, privilege)

描述:指定用户是否有访问外部服务的权限。

参数:user可以通过名字(text类型)或OID来声明。server可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串取值必须是USAGE。

返回类型:boolean

has_server_privilege(server, privilege)

描述:当前用户是否有访问外部服务的权限。

参数:server可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串取值必须是USAGE。

返回类型:boolean

备注:has_server_privilege检查用户是否能以指定方式访问指定外部服务器。其参数类似has_table_privilege。访问权限类型必须是USAGE。

has_table_privilege(user, table, privilege)

描述:指定用户是否有访问表的权限。

参数:user可以通过名字(text类型)或OID来声明。table可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES或TRIGGER,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

has_table_privilege(table, privilege)

描述:当前用户是否有访问表的权限。

参数:table可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES或TRIGGER,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

备注:has_table_privilege检查用户是否以特定方式访问表。用户可以通过名字或OID(pg_authid.oid)来指定,public表明PUBLIC伪角色,如果缺省该参数,则使用current_user。该表可以通过名字或者OID声明。如果用名字声明,则在必要时可以用模式进行修饰。如果使用文本字符串来声明权限类型,可以给权限类型添加WITH GRANT OPTION,用来测试权限是否拥有授权选项。当有多个权限类型时,拥有任何所列出的权限之一,则结果便为true。

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
SELECT has_table_privilege('tpcds.web_site', 'select');
 has_table_privilege  
--------------------- 
 t 
(1 row)

SELECT has_table_privilege('dbadmin', 'tpcds.web_site', 'select,INSERT WITH GRANT OPTION ');
 has_table_privilege  
--------------------- 
 t 
(1 row) 

pg_has_role(user, role, privilege)

描述:指定用户是否有角色的权限。

参数:user可以通过名字(text类型)或OID来声明。role可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值MEMBER、USAGE,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

pg_has_role(role, privilege)

描述:当前用户是否有角色的权限。

参数:role可以通过名字(text类型)或者OID来声明。privilege使用文本字符串来声明,该文本字符串可取值MEMBER、USAGE,也可以用逗号分隔列出的多个权限类型。

返回类型:boolean

备注:pg_has_role检查用户是否能以特定方式访问角色。其参数类似has_table_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。