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.
Réponses
Trop de publicités?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é !
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';