2014-12-03 15 views
0

我想在触发器中进行修正,但是这个问题有200-300个例子 - 手动执行太多了。 Postgresql中是否有包含完整数据库代码的表,我可以在其中找到所有的定义并在同一时间更正它们?带Postgresql中函数定义的系统表

这可能是初学者的问题(我知道在Oracle中有这样的表,但我是Postgresql的新手),但我似乎无法在Web或我自己中找到它。

+0

最简单的方法是使用'pg_dump -U the_user --schema-only the_dbname >> textfile.sql',并使用文本文件的内容。文本文件将包含** all ** DDL,包括表,索引,视图,函数,但是这些很容易从文本文件中删除。 – wildplasser 2014-12-03 14:46:56

+0

似乎有帮助。该文件在什么目录中显示?似乎无法用'find -name'textfile *'找到它,但是在linux上工作时我并不真正有效 – Hisu 2014-12-03 14:59:08

+0

没有文件。输出发送到stdout。 (在我的例子中,我用'>> textfile'将它重定向到了一个文件)还有一个'--file = FILENAME'选项/ flag给pg_dump命令 – wildplasser 2014-12-03 15:02:10

回答

0

包含postgres中所有过程定义的表格是pg_catalog.pg_proc

源代码列为prosrc

你可以这样做:

select proname, prosrc from pg_proc where proname like '%doc%';

假设你有一个名为DOC某些功能。

存储过程pg_catalog.pg_get_functiondef将返回特定函数的源代码。你可以这样做:

select pg_get_functiondef(oid) from pg_proc where proname='myfunction_name';

不幸的是,pg_get_functiondef使用聚合函数内部 - 所以你不能在正在恢复不止一个函数的查询调用pg_get_functiondef

+0

已经使用了pg_dump的解决方法,但pg_proc表正是我一直在寻找的东西,在另一种情况下它肯定会很有用。感谢帮助。 – Hisu 2014-12-03 16:57:21