¿Cómo puedo mostrar el contenido de un disparador con psql?

13

Sé que puedo enumerar los desencadenantes con \dft. Pero, ¿cómo puedo ver un disparador concreto? Quiero saber detalles sobre en qué eventos se ejecuta el activador, qué función se ejecuta, etc.

Mnementh
fuente

Respuestas:

24

OK, lo descubrí yo mismo.

El comando \dftno muestra los disparadores en sí mismo (como pensé), muestra todas las funciones de disparo (disparador de tipo retorno).

Para ver el desencadenante que puede realizar \dS <tablename>, muestra no solo las columnas de esta tabla, sino también todos los desencadenantes definidos en esta tabla.

Para mostrar la fuente de la función de disparo (o cualquier función) use \df+ <functionname>.

Mnementh
fuente
1
Use \ ef <nombre_función> para lecturas más convenientes.
Brain90
7

Si no tiene acceso a los comandos psql, aún puede usar:

select pg_get_functiondef('functionname'::regproc);
jlfenaux
fuente
2

Puedes probar lo siguiente:

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers ORDER BY event_object_table,event_manipulation

o puede mostrar los desencadenantes de una tabla llamada 'testtable' como esta:

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers WHERE event_object_table='testtable' ORDER BY event_object_table,event_manipulation
gdarcan
fuente