Re: current_query()

From: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
To: kernel <jucabapa(at)gmail(dot)com>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: current_query()
Date: 2022-02-22 16:05:19
Message-ID: YhUJv+gJ8J5iV/1j@ahch-to
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Tue, Feb 22, 2022 at 10:55:16AM +0100, kernel wrote:
> Hola,
>
> Estoy utilizando un sistema de auditoria a base de triggrers,  en cada tabla
> tengo un triggers que llama a una función, en esta funcion utilizo la
> funcion current_query().
>
> Hasta aquí todo bien, el problema es que cuando ejecuto varias instrucciones
> a la  vez (desde pgadmin ) me trata todas las instrucciones como una sola
>
> ¿Hay alguna otra función que me devuelva la instrucción que activa el
> trigger?
>
>
> Ejemplo desde pgadmin:
>
>
> select * from clientes;
>
> select * from productos;
>
> update  precios set precio = 0 where  familia = 'XX'  -- en esta tabla esta
> el trigger
>
>
> Actualmente la función current_query() me devuelve esto :  select * from
> clientes;select * from productos;update  precios set precio = 0 where 
> familia = 'XX'
>

Las 3 consultas están en la misma ventana de pgAdmin? te aseguraste de
marcar (señalar, seleccionar) el update antes? supongo que no porque no
tiene ningún sentido ejecutar current_query() de ese modo.

verás current_query() devuelve la consulta que se esté ejecutando en ese
momento y si seleccionas current_query() y la ejecutas te devolverá:
<sonido de tambores> "select current_query()".

como no marcaste ninguna sentencia, en ese caso pgAdmin ejecuta todas
las sentencias que están en esa ventana, pero se envían como una
consulta multi-sentencia. Es decir, lo que estás viendo: "select
consulta1; select consulta2; update...".

el uso de current_query() tiene sentido dentro de funciones almacenadas
y, quizá aunque no lo he probado en ejecución asincrónica de sentencias
(https://www.postgresql.org/docs/14/libpq-async.html)

Un ejemplo del uso de current_query() que buscas lo puedes encontrar
aquí: https://github.com/2ndQuadrant/audit-trigger

--
Jaime Casanova
Director de Servicios Profesionales
SystemGuards - Consultores de PostgreSQL

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message kernel 2022-02-23 07:59:57 Re: current_query()
Previous Message kernel 2022-02-22 09:55:16 current_query()