Cómo imprimir funciones y desencadena el código fuente en postgresql? por favor, avíseme si alguien sabe la consulta para mostrar la función, desencadena el código fuente.¿Cómo se muestra la función, el procedimiento y el código fuente de los desencadenadores en postgresql?
Respuesta
Hay muchas posibilidades. La forma más sencilla es simplemente usar pgAdmin y obtener esto desde la ventana de SQL. Sin embargo, si desea obtener esto programáticamente, examine los catálogos del sistema pg_proc
y pg_trigger
o las routines
y triggers
vistas desde el esquema de información (es una forma estándar de SQL, pero puede que no cubra todas las funciones, especialmente las específicas de PostgreSQL). Por ejemplo:
SELECT
routine_definition
FROM
information_schema.routines
WHERE
specific_schema LIKE 'public'
AND routine_name LIKE 'functionName';
Mmmm .. Tengo funciones PGPSQL, que tienen un routing_definition vacío, y digo 'EXTERNAL' en el campo routine_body. ¿Alguna pista donde puedo encontrarlos? – alfonx
+1 Esta es una solución más estándar/portátil. Para las vistas, el SQL es: 'SELECT view_definition FROM information_schema.views WHERE table_schema =? AND table_name =? ' – Franta
Pero, ¿qué pasa con el caso en que el nombre de una función no es único porque alguien hizo funciones con el mismo nombre y diferentes argumentos de funciones? https://stackoverflow.com/questions/47341513/postgresql-how-to-display-function-or-trigger-or-view-code-for-a-unique-item – mg1075
para la función:
se puede consultar la vista pg_proc, al igual que el siguiente
select proname,prosrc from pg_proc where proname= your_function_name;
Otra forma es que sólo hay que ejecutar el commont \df
y \ef
que puede enumera las funciones.
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
Mostrará el código fuente de la función.
Para desencadenantes:
I dont't saber si hay una manera directa para obtener el código fuente. Solo sé de la siguiente manera, ¡puede ser que te ayude!
- paso 1: Obtener el OID tabla del disparador:
skytf=> select tgrelid from pg_trigger where tgname='insert_tbl_tmp_trigger'; tgrelid --------- 26599 (1 row)
- paso 2: Obtener el nombre de la tabla de la OID de arriba!
skytf=> select oid,relname from pg_class where oid=26599; oid | relname -------+----------------------------- 26599 | tbl_tmp (1 row)
- paso 3: lista de la información de la tabla
skytf=> \d tbl_tmp
Se le mostrará los detalles del gatillo de la tabla. Por lo general, un desencadenador utiliza una función. ¡De modo que puede obtener el código fuente de la función de disparo como lo anterior que señalé!
Cómo ver ** funciones de una instalación EXTENSION? ** Ejemplo Estoy usando [ltree] (https://www.postgresql.org/docs/current/static/ltree.html), pero no hay respuesta con '\ df ltxtquery'. –
\df+
en psql le proporciona el código fuente.
Agradable :) Sugiero usar '\ df' para encontrar el nombre de su función, luego' \ x' para la salida expandida, luego '\ df + name_of_function' –
\ df + genera mucho más que el código. Si todo lo que quieres es el código, \ sf hará el truco! – Telic
Cómo ver ** funciones de una EXTENSIÓN instalada? ** Ejemplo Estoy usando [ltree] (https://www.postgresql.org/docs/current/static/ltree.html), pero no hay respuesta con ' \ df ltxtquery'. –
adicionalmente a la respuesta de @ franco puede utilizar esta interfaz de SQL:
select
prosrc
from pg_trigger, pg_proc
where
pg_proc.oid=pg_trigger.tgfoid
and pg_trigger.tgname like '<name>'
(tomado de aquí: http://www.postgresql.org/message-id/[email protected]m)
Aquí están algunos ejemplos de PostgreSQL-9.5
lista de visualización:
- Funciones:
\df+
- disparadores:
\dy+
Pantalla Definición:
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
function_name en psql produce código fuente editable de una sola función.
De https://www.postgresql.org/docs/9.6/static/app-psql.html:
\ sf function_description [+] Este comando recuperaciones y muestra la definición de la función llamada, en forma de un comando CREATE OR REPLACE FUNCTION.
Si + se añade al nombre del comando, a continuación, las líneas de salida están numeradas, con la primera línea del cuerpo de la función de ser la línea 1.
Un poco más de simplemente mostrar la función, la forma de conseguir la edita las instalaciones in situ también.
\ef <function_name>
es muy útil. Se abrirá el código fuente de la función en formato editable. No solo podrá verlo, también puede editarlo y ejecutarlo.
Sólo \ef
sin nombre_de_función abrirá la plantilla CREATE FUNCTION editable.
Para mayor referencia ->https://www.postgresql.org/docs/9.6/static/app-psql.html
- 1. Cómo deshabilitar los desencadenadores en PostgreSQL 9?
- 2. ¿Cómo desactivo temporalmente los desencadenadores en PostgreSQL?
- 3. muestra el código fuente para la función en R
- 4. Cómo editar el procedimiento almacenado de PostgreSQL?
- 5. Código fuente para el procedimiento almacenado específico o función
- 6. ¿Cómo se muestra el código fuente para la función creada dinámicamente ("personalizada") en IPython?
- 7. JSP que muestra el código fuente en lugar de ejecutar
- 8. IE8 Profiler de Javascript que no muestra el código fuente
- 9. ¿Cómo se muestra el código fuente en windbg a través de ntsd -d?
- 10. diferencias entre el procedimiento y la función y la rutina?
- 11. ¿Cómo se organiza el código fuente de clase en Java?
- 12. ¿Cómo se muestra el prototipo de función en Emacs?
- 13. Ignorando el código fuente en el depurador
- 14. ¿Variable global basada en sesión en el procedimiento almacenado Postgresql?
- 15. Visual Studio: muestra todas las llamadas a una función en el nivel de código fuente
- 16. ¿Cómo se muestra el código fuente con sangría en una página web? HTML? CSS?
- 17. ¿Cómo se muestra el código de una rutina .C utilizada por la función R?
- 18. Inconsistencia al establecer el tamaño de la fuente TextView en el código y en los recursos
- 19. Mostrar código de procedimiento/función en MySql
- 20. ¿Cómo rastreas los cambios en la base de datos en el control de código fuente?
- 21. ¿Qué idioma usas para los desencadenadores PostgreSQL y los procedimientos almacenados?
- 22. ¿Cómo se busca todo el código fuente en Vim?
- 23. Widget StackView Código fuente de muestra
- 24. ¿Por qué se muestra mi código fuente de PHP?
- 25. Cómo llamar a la función C# en el procedimiento almacenado
- 26. ¿Cuándo se activan los desencadenadores de la base de datos?
- 27. ¿Cómo uso los datos en package_data desde el código fuente?
- 28. Depurar el código fuente de .NET Framework solo muestra el desensamblaje en Visual Studio 2010
- 29. ¿Cómo se puede entender el código fuente de GNU?
- 30. En Emacs, ¿cómo se muestra un mensaje en el minibúfer con propiedades de cara de fuente?
como una nota para los seguidores que llegaron aquí tratando de encontrar la manera de una lista de todos los factores desencadenantes, es 'seleccionar * de pg_trigger;' o, si también desea ver qué mesa de cada uno trigger se aplica a 'select tgrelid :: regclass, tgname from pg_trigger;' FWIW ' – rogerdpack