您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

4.13. 杂项函数

Table 4-25. 会话信息函数

名字 返回类型 描述
current_user name 目前执行环境下的用户名
session_user name 会话用户名
user name 等于 current_user

session_user 是初始化数据库联接的用户,在该次联接过程 中固定. current_user 是用于权限检查的用户标识.目前 它总是等于会话用户,但是在将来可能有 "setuid" 函数和其他 它总是等于会话用户,但是在将来可能有 "setuid" 函数和其他 允许当前用户临时改变身份的机制,那么会话用户是 "真实用户" 而当前用户是 "有效用户"

请注意这些函数在 SQL 里有特殊的语意状态∶调用时结尾 不要跟着园括号.

废弃: 函数 getpgusername() 是一个过时的函数,等效于 current_user

Table 4-26. 系统信息函数

名字 返回类型 描述
version text PostgreSQL 版本信息

version() 返回一个描述 PostgreSQL 服务器的版本的字串.

Table 4-27. 访问权限查询函数

名字 返回类型 描述
has_table_privilege ( user , table , access ) boolean 用户是否有访问表的权限
has_table_privilege ( table , access ) boolean 当前用户是否有访问表的权限

has_table_privilege 判断一个用户是否可以用某种 特定的方式访问一个表.该用户可以通过名字或者 ID ( pg_user . usesysid ) 来声明,如果省略该参数,则使用 current_user . 该表可以通过名字或者 OID 声明.(因此,实际上有六种 has_table_privilege 的变体,我们可以通过它们的参数数目 和类型来区分它们.) 所希望的访问类型是用一个文本字串来声明的,它们必须得出下面的几个 数值之一∶ SELECT INSERT UPDATE DELETE RULE REFERENCES ,或 TRIGGER .(当然,字串的大小写没什么关系.)

Table 4-28. 表信息函数

名字 返回类型 描述
pg_get_viewdef ( viewname ) text 为视图获取 CREATE VIEW 命令
pg_get_ruledef ( rulename ) text 为规则获取 CREATE RULE 命令
pg_get_indexdef ( indexOID ) text 为索引获取 CREATE INDEX 命令
pg_get_userbyid ( userid ) name 获取给出的 ID 的用户名

这些函数从系统表中抽取一定信息. pg_get_viewdef() pg_get_ruledef() , 和 pg_get_indexdef() 分别从一个视图,规则,或者索引 上重新构造创建它们的命令.(请注意这里是一个反编译的重新构造, 而不是该命令的原文.) pg_get_userbyid() 获取给出 的一个 usesysid 数值对应的用户名.

Table 4-29. 注释信息函数

名字 返回类型 描述
obj_description ( objectOID , tablename ) text 获取一个数据库对象的评注
obj_description ( objectOID ) text 获取一个数据库对象的评注( 废弃 )
col_description ( tableOID , columnnumber ) text 获取一个表字段的评注

这些函数将原来用 COMMENT 命令存储的评注抽取出来. 如果没有找到匹配声明的参数的评注,则返回 NULL

两个参数形式的 obj_description() 返回一个数据库 对象的评注,该对象是通过其 OID 和其包含系统表的名字声明的. 比如, obj_description(123456,'pg_class') 将返回 OID 为 12345 的表的评注.一个参数的 obj_description() 只要求对象 OID.它现在已经废弃了,因为我们不再保证 OID 在不同的 系统表之间是唯一的;因此可能会返回错误的评注.

col_description() 返回一个表的字段的评注, 它是通过它的表和字段号的 OID 来声明的. 我们不能将 obj_description() 用于表字段, 因为字段没有自己的 OID.