postgresqlの関数とトリガソースコードを出力するには?もし誰かがその関数を表示するクエリを知っていれば、私に教えてください、ソースコードを起動します。関数、プロシージャを表示する方法は、postgresqlのソースコードをトリガする?
答えて
多くの可能性があります。最も単純な方法は、pgAdminを使用してSQLウィンドウからこれを取得することです。しかし、これをプログラマチックに入手したい場合は、pg_proc
とpg_trigger
システムカタログまたはroutines
とtriggers
という情報スキーマからのビュー(SQLの標準的な方法ですが、特にPostgreSQL特有のすべての機能をカバーしていない可能性があります)を調べてください。たとえば、次のように
SELECT
routine_definition
FROM
information_schema.routines
WHERE
specific_schema LIKE 'public'
AND routine_name LIKE 'functionName';
Mmmm ..私はルーチンroutine_bodyに空のルーチン定義と、状態 'EXTERNAL'を持つPGPSQL関数を持っています。私はそれらを見つけることができる任意のヒント? – alfonx
+1これはより標準的な/ポータブルなソリューションです。ビューの場合、SQLは次のようになります。 'SELECT view_definition FROM information_schema.views WHERE table_schema =? AND table_name =? ' – Franta
しかし、誰かが同じ名前と異なる関数引数を持つ関数を作ったので、関数名が一意でない場合はどうでしょうか? https://stackoverflow.com/questions/47341513/postgresql-how-to-display-function-or-trigger-or-view-code-for-a-unique-item – mg1075
関数の場合:
あなたはもう一つの方法は、ちょうどそのことができますcommont \df
と\ef
を実行することであるだけで、次の
select proname,prosrc from pg_proc where proname= your_function_name;
として、はpg_procビューを照会することができます関数をリストします。
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
機能のソースコードが表示されます。
トリガーの:
私は、ソースコードを入手するための直接的な方法があるかどうかを知るdont't。ちょうど次の方法を知っている、それはあなたに役立つかもしれません!
- ステップ1:トリガーのテーブルのOIDを取得します:
skytf=> select tgrelid from pg_trigger where tgname='insert_tbl_tmp_trigger'; tgrelid --------- 26599 (1 row)
- ステップ2:上記のOIDのテーブル名を取得します!
skytf=> select oid,relname from pg_class where oid=26599; oid | relname -------+----------------------------- 26599 | tbl_tmp (1 row)
- ステップ3:リストそれはあなたのテーブルのトリガの詳細が表示されます
skytf=> \d tbl_tmp
テーブル情報。通常、トリガは関数を使用します。だから私が指摘したように、トリガー関数のソースコードを得ることができます!
**表示方法**インストール済みの機能EXTENSION?**例[ltree](https://www.postgresql.org/docs/current/static/ltree.html)を使用していますが、 '\ df ltxtquery'で応答がありません。 –
\df+
psqlにはソースコードがあります。あなたは、SQLインターフェイスからこれを使用することができます@フランの答えに加えて
いいです:)私はあなたの関数の名前を見つけるために '\ df'を使い、次に拡張出力のために' \ x'を、次に '\ df + name_of_function'を入力することをお勧めします。 –
\ df + \ sfがそのトリックを行います! – Telic
インストールされたEXTENSIONの**機能の見方?**例[ltree](https://www.postgresql.org/docs/current/static/ltree.html)を使用していますが、 \ df ltxtquery'です。 –
:
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/[email protected]m)を
をここでは、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$
\sf
psqlのfunction_nameは、単一の関数の編集可能なソースコードを生成します。 https://www.postgresql.org/docs/9.6/static/app-psql.htmlから
:
\ SF [+] function_description このコマンドは、フェッチと、CREATE OR REPLACE FUNCTIONコマンドの形式で、指定された関数の定義を示しています。
+を得ることについてどのように、関数本体の最初の行は、単に機能を表示するよりもわずかにライン1
ことで、出力ラインは番号が付けられ、コマンド名に付加されている場合インプレース機能も編集します。
\ef <function_name>
は非常に便利です。関数のソースコードを編集可能な形式で開きます。 あなたはそれを見ることができるだけでなく、編集して実行することもできます。
function_nameを指定しないで\ef
を編集すると、編集可能なCREATE FUNCTIONテンプレートが開きます。 `または、あなたはまた、どのテーブルそれぞれを見たい場合は、すべてのトリガーを一覧表示する方法を把握しようとここに来た信者のためのノートとして>https://www.postgresql.org/docs/9.6/static/app-psql.html
- 1. IPythonノートブックでパッケージ関数のソースコードを表示する方法
- 2. ユーザーのクリックでsetInterval関数をトリガする方法は?
- 3. teradataのソースコード(ラップコード)を非表示にする方法は?
- 4. ソースコードとは別の順序でHTMLを表示する方法
- 5. JARファイル内のソースコードを表示する方法は?
- 6. Racket REPL内から関数のソースコードを表示する方法はありますか?
- 7. ExcelのソースコードをモーダルのExcelファイルで表示する方法
- 8. ウェブでグラスフィッシュのソースコードを表示する方法
- 9. Eclipseでウィザードダイアログのソースコードを表示/編集する方法
- 10. EclipseでJREのソースコードをlinux(debian)で表示する方法
- 11. Fortran、プロシージャを複数コピーする方法
- 12. jQuery複数のランダムドロップイベントの後に関数をトリガする方法は?
- 13. javascriptでpl/sqlプロシージャと関数を呼び出す方法は?
- 14. Eclipse RCP:ソースコードを表示するには?
- 15. データベース内の値を非表示にする方法PostgreSQL
- 16. ウェブページを自動的に表示する方法ソースコード
- 17. DLL関数の表示方法は?
- 18. PostgreSQLでトリガのソースを特定する
- 19. PostgreSQLの再帰トリガを防止する
- 20. PostgreSQLのトリガ関数を書く際に助けが必要
- 21. firebugプロファイラに非匿名の関数を表示する方法
- 22. 関数の定義を表示する方法
- 23. JavaScriptを使用してブラウザのバックイベント/関数をトリガする方法は?
- 24. RichfaceのAJAXの成功のためにJavaScript関数をトリガする方法は?
- 25. トリガでプロシージャを実行
- 26. Tsqlスカラー関数を表関数に変換する方法は?
- 27. RadToolTip:ラベルコントロールでトリガされたマウスオーバーイベントで表示する方法
- 28. yii crudモデル関数をトリガするボタンを追加する方法
- 29. cakephpモデル:モデル関数にメッセージを表示する方法
- 30. Django - ajax関数でメッセージを表示する方法
、それは' pg_trigger SELECT * FROMだ - さらに参考のために
トリガは 'select tgrelid :: regclass、tgname from pg_trigger;に適用されます。' FWIW ' – rogerdpack