如何在postgresql中显示函数,过程,触发源代码?
如何在postgresql中打印函数和触发源代码? 请让我知道是否有人知道查询显示function,触发源代码。
psql中的 \df+
为您提供源代码。
对于function:
您可以查询pg_proc视图,如下所示
select proname,prosrc from pg_proc where proname= your_function_name;
另一种方法是只执行可以列出函数的commont \df
和\ef
。
skytf=> \df List of functions Schema | Name | Result data type | Argument data types | Type --------+----------------------+------------------+------------------------------------------------+-------- public | pg_buffercache_pages | SETOF record | | normal skytf=> \ef pg_buffercache_pages
它将显示该函数的源代码。
触发器:
我不知道是否有直接的方式来获取源代码。 只要知道以下的方式,可能会帮助你!
- 第1步:获取触发器的表格oid:
skytf =>从pg_trigger中selecttgrelid,其中tgname ='insert_tbl_tmp_trigger'; tgrelid --------- 26599 (1排)
- 第2步:获取上述oid的表名!
skytf => select oid,来自pg_class的relname,其中oid = 26599; oid | relname ------- + ----------------------------- 26599 | tbl_tmp (1排)
- 第3步:列出表格信息
skytf => \ d tbl_tmp
它会告诉你表的触发器的细节。 通常一个触发器使用一个函数。 所以你可以得到触发函数的源代码就像我指出的那样!
有很多可能性。 最简单的方法就是使用pgAdmin并从SQL窗口中获取。 但是,如果你想以编程方式获得这个信息,那么检查pg_proc
和pg_trigger
系统目录或routines
并从信息模式triggers
视图(这是SQL标准方式,但可能不包括所有function,尤其是PostgreSQL特有的)。 例如:
SELECT routine_definition FROM information_schema.routines WHERE specific_schema LIKE 'public' AND routine_name LIKE 'functionName';
这里有几个来自PostgreSQL-9.5的例子
显示列表:
- 函数:
\df+
- 触发器:
\dy+
显示定义:
postgres=# \sf function name is required postgres=# \sf pg_reload_conf() CREATE OR REPLACE FUNCTION pg_catalog.pg_reload_conf() RETURNS boolean LANGUAGE internal STRICT AS $function$pg_reload_conf$function$ postgres=# \sf pg_encoding_to_char CREATE OR REPLACE FUNCTION pg_catalog.pg_encoding_to_char(integer) RETURNS name LANGUAGE internal STABLE STRICT AS $function$PG_encoding_to_char$function$
另外@法郎的答案,你可以使用这个从SQL界面:
select prosrc from pg_trigger, pg_proc where pg_proc.oid=pg_trigger.tgfoid and pg_trigger.tgname like '<name>'
(取自: http : //www.postgresql.org/message-id/Pine.BSF.4.10.10009140858080.28013-100000@megazone23.bigpanda.com )
psql中的\sf
function_name产生单个函数的可编辑源代码。
从https://www.postgresql.org/docs/9.6/static/app-psql.html :
\ sf [+] function_description该命令以CREATE OR REPLACE FUNCTION命令的forms获取并显示命名函数的定义。
如果将+添加到命令名称中,则输出行将被编号,函数体的第一行是第一行。