时间:2024-02-09 10:40作者:下载吧人气:28
Postgresql如何批量修改函数拥有者,默认创建的函数对象的拥有者为当前创建的用户,如果使用postgres超级管理员创建一个test()的函数,拥有者就是postgres用户。下面讲解下如何批量修改拥有者。
本文演示的Postgresql版本如下:
PostgreSQL 9.6.8
要查询Postgresql的函数和函数参数需要使用函数视图和参数视图,分别记录了函数信息和参数列表信息。
视图一: information_schema.routines
视图routines包含当前数据库中所有的函数。只有那些当前用户能够访问(作为拥有者或具有某些特权)的函数才会被显示。需要用到的列如下,完整视图讲解请参考官方文档。
名称 | 数据类型 | 备注 |
---|---|---|
specific_schema | sql_identifier | 包含该函数的模式名 |
routine_name | sql_identifier | 该函数的名字(在重载的情况下可能重复) |
specific_name | sql_identifier | 该函数的”专用名”。这是一个在模式中唯一标识该函数的名称,即使该函数真正的名称已经被重载。专用名的格式尚未被定义,它应当仅被用来与指定例程名称的其他实例进行比较。 |
视图二: information_schema.parameters
视图parameters包含当前数据库中所有函数的参数的有关信息。只有那些当前用户能够访问(作为拥有者或具有某些特权)的函数才会被显示。需要用到的列如下,完整视图讲解请参考官方文档。
名称 | 数据类型 | 备注 |
---|---|---|
parameter_name | sql_identifier | 参数名,如果参数没有名称则为空 |
udt_name | sql_identifier | 该参数的数据类型的名字 |
ordinal_position | cardinal_number | 该参数在函数参数列表中的顺序位置(从 1 开始计数) |
specific_name | cardinal_number | 该函数的”专用名”。详见第 35.40 节。 |
注意:可以通过routines. specific_name 和 parameters.specific_name字段关联查询。
如果需要修改的函数只有一个,请执行如下SQL语句即可:
如果需要修改的函数只有一个,请执行如下SQL语句即可:
// 无参数函数
ALTER FUNCTION “abc”.”test”() OWNER TO “dbadmin”;
//带参数函数
ALTER FUNCTION “abc”.”test3″(p1 varchar, p2 varchar) OWNER TO “dbadmin”;
网友评论