From: | kernel <jucabapa(at)gmail(dot)com> |
---|---|
To: | Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: current_query() |
Date: | 2022-02-23 07:59:57 |
Message-ID: | 89e22594-1905-2e6d-0f38-036b9b4fb431@gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 22/02/2022 a las 17:05, Jaime Casanova escribió:
> 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
Gracias Jaime,
Como comente , current_query lo ejecuto dentro de un a función que es
llamada por un trigger, es por eso por lo que lo que quiero es saber si
hay alguna instrucción que me devuelva la sentencia que activo el trigger
Un Saludo
From | Date | Subject | |
---|---|---|---|
Next Message | postgresql corrientes | 2022-03-09 12:25:20 | Fwd: PostgreSQL Corrientes Argentina |
Previous Message | Jaime Casanova | 2022-02-22 16:05:19 | Re: current_query() |