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
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() |