¿Como detecto si un UPDATE modifica un campo en especifico?

From: Armando Venegas Pérez <venegasp_armando(at)hotmail(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: ¿Como detecto si un UPDATE modifica un campo en especifico?
Date: 2012-04-20 16:08:04
Message-ID: BAY164-W17D9F56ACC51FCE53CD7DFF7220@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Alvaro Herrera, Antonio Galicia y a saludos a toda la comunidad.

Alvaro:
En cierta manera tienes razón con lo del pescado.

Se generó un sistema para el control de inventario. Hay 52 módulos que afectan una tabla en específico y otras más.
El encargado del sistema ahora quiere que se valide la información de esa tabla.
Procesar toda la tabla completa (aún cuando fuera con un "cron" corriendo durante la noche) es un desperdicio de tiempo y procesamiento pues la tabla ya casí tiene los 40 millones de registros.

Una propuesta es agregar un campo adicional llamado "estatus". Si el campo está NULL se validan los campos de la tabla.

Para evitar modificar los 52 módulos, se había planteado la opción del TRIGGER. Por esta razón es mi pregunta expuesta a la comunidad.
---
Los modulos nunca modifican el campo "estatus" y por esta razón ponerlo a NULL.
El validador al terminar el proceso llena el campo "estatus" y se debe grabar en BD.
--

Antonio:
Gracias por tu comentario
--En C puedes revisar el contenido de "FunctionCallInfoData".--

Creo que debo hacer más investigación para desarrollar lo que mencionas, y por el tiempo no me es posible.
Tal vez sea algo adicional para desarrollar en el futuro a manera de proyecto.

Creo que es mejor modificar los módulos.

Gracias a todos.

> CC: venegasp_armando(at)hotmail(dot)com; pgsql-es-ayuda(at)postgresql(dot)org
> Subject: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] RE: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico?
> From: alvherre(at)alvh(dot)no-ip(dot)org
> To: antonio(dot)galicia(at)gmail(dot)com
> Date: Fri, 20 Apr 2012 10:46:10 -0300
>
>
> Excerpts from Antonio Galicia's message of jue abr 19 19:32:08 -0300 2012:
> > 2012/4/19 Armando Venegas Pérez <venegasp_armando(at)hotmail(dot)com>:
> >
> > > Necesito validar explícitamente el QUERY (la sentencia del UPDATE).
> > > Si la sentencia modifica el campo "estatus" escribo el valor.
> > > Si la sentencia no define algún valor para "estatus" debo ponerlo como NULL.
> >
> > Entonces lo que quieres es saber si entre la lista de valor que se
> > envian al UPDATE incluyen uno para "estatus". No tengo un postgres a
> > la mano y en la documentación de la versión 8.4 no dice nada de alguna
> > variable con la lista de campos a ser actualizados. Revisar el
> > contenido de NEW.estatus no tiene sentido dado que si no se le asignó
> > valor en el UPDATE va a tomar el valor que está en el registro.
> >
> > Estaba buscando en las tablas del sistema si alguna lleva el estado
> > del trigger, a saber si tiene la lista de parámetros (valores) pero no
> > encuentro algo que de una pista. Esto, claro, desde una lengualje de
> > alto nivel. En C puedes revisar el contenido de
> > "FunctionCallInfoData".
>
> En un trigger, los argumentos son cosas del tipo NEW y OLD; no están
> presentes las cláusulas de la consulta. A mí me parece que un trigger
> realmente no es el mecanismo apropiado para resolver este problema.
> Quizás sea posible buscar una solución usando reglas; o quizás
> simplemente no se puede.
>
> A mí me da la impresión de que toda esta situación es más bien resultado
> de un problema que no está correctamente planteado. Esa necesidad de
> poner NULL un valor que no se especifica en el update me huele a un
> pescado que se ha pasado de días esperando en el mercado -- mientras
> más pasan los días, menos probable es que aparezca un comprador.
>
> --
> Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
> Para cambiar tu suscripci�n:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message nestor 2012-04-20 16:10:06 Problema al utilizar xampp 1.7.7 con postgres 9.1
Previous Message Alvaro Herrera 2012-04-20 13:46:10 Re: Re: [pgsql-es-ayuda] RE: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico?