199 votes

Comment faire pour afficher la fonction, procédure, déclenche le code source de postgresql?

Comment imprimer des fonctions et déclencheurs code source de postgresql? s'il vous plaît laissez-moi savoir si quelqu'un connais la requête pour afficher la fonction, déclenche le code source.

186voto

Mateusz Grotek Points 300

\df+ dans psql vous donne le code source.

141voto

francs Points 1829

Pour la fonction:

vous pouvez interroger l'pg_proc vue , tout comme le suivant

select proname,prosrc from pg_proc where proname= your_function_name; 

Une autre façon est que juste d'exécuter le commont \df et \ef qui peut énumérer les fonctions.

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

Il affiche le code source de la fonction.

Pour les déclencheurs:

Je ne sais pas si il y a un moyen direct d'obtenir le code source. Savez juste la façon suivante, peut-être cela peut vous aider!

  • étape 1 : Obtenir l'oid de la table de la gâchette:
 skytf=> sélectionnez tgrelid de pg_trigger où tgname='insert_tbl_tmp_trigger';
tgrelid
---------
26599
 (1 ligne)
  • étape 2: Obtenir le nom de la table de l'oid ci-dessus !
 skytf=> sélectionnez oid,relname de pg_class où oid=26599;
 oid | relname 
-------+-----------------------------
 26599 | tbl_tmp
 (1 ligne)
  • étape 3: liste les informations de la table de
 skytf=> \d tbl_tmp

Il va vous montrer les détails de la gâchette de la table . Habituellement, un déclencheur utilise une fonction. De sorte que vous pouvez obtenir le code source de la fonction de déclenchement comme ci-dessus que je l'ai souligné !

27voto

Grzegorz Szpetkowski Points 10225

Il y a beaucoup de possibilités. Façon la plus simple est de simplement utiliser pgAdmin et obtenir ce à partir de SQL fenêtre. Toutefois, si vous voulez obtenir ce par programmation puis examiner pg_proc et pg_trigger catalogues système ou routines et triggers vues à partir des informations de schéma (c'est la norme SQL, mais il pourrait ne pas couvrir toutes les fonctionnalités particulièrement PostgreSQL). Par exemple:

SELECT
    routine_definition 
FROM
    information_schema.routines 
WHERE
    specific_schema LIKE 'public'
    AND routine_name LIKE 'functionName';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X