2014-12-03 61 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