RE: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico?

From: Armando Venegas Pérez <venegasp_armando(at)hotmail(dot)com>
To: <jaime(at)2ndquadrant(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico?
Date: 2012-04-19 18:14:26
Message-ID: BAY164-W22FB942C3CBC41D93CDA4FF73D0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Hola Jaime y a toda la comunidad.

Gracias por su tiempo, pero no necesito comparar lo que antes había en la BD contra lo nuevo.
(El ejemplo que escribí en el PL/PGSQL solo es como referencia, pues me doy cuenta que eso no me sirve)

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.

Ejemplo: (En todos los casos NO IMPORTA el valor que antes había en el campo "estatus")

Si ejecuto:

UPDATE retorno SET nombre='Alberto', estatus='A' WHERE id=6;

En la tabla el campo estatus debe ser:

'A'

---------------------

Si ejecuto:
UPDATE retorno SET nombre='Alberto' WHERE id=6;

En la tabla el campo estatus debe ser:
NULL

---------------------

Si ejecuto:

UPDATE retorno SET nombre='Alberto', estatus='E' WHERE id=6;

En la tabla el campo estatus debe ser:

'E'

---------------------

Si ejecuto:

UPDATE retorno SET estatus='I' WHERE id=6;

En la tabla el campo estatus debe ser:

'I'

---------------------

Gracias y saludos

> From: jaime(at)2ndquadrant(dot)com
> Date: Thu, 19 Apr 2012 12:46:49 -0500
> Subject: Re: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico?
> To: venegasp_armando(at)hotmail(dot)com
> CC: pgsql-es-ayuda(at)postgresql(dot)org
>
> 2012/4/19 Armando Venegas Pérez <venegasp_armando(at)hotmail(dot)com>:
> > Buen dia comunidad.
> >
> > Al ejecutar un UPDATE necesito detectar si modifica un campo definido, en
> > caso de no hacerlo, este se cambia a nulo.
> >
>
> necesitas usar IS DISTINCT FROM: new.status IS DISTINCT FROM old.status
> no basta con != por que en el caso de que el estatus este en NULL
> evaluar "new.status != old.status" dara como resultado NULL que no es
> true ni false asi que no ejecuta nada del IF
>
> --
> Jaime Casanova www.2ndQuadrant.com
> Professional PostgreSQL: Soporte 24x7 y capacitación

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Henry Interiano 2012-04-19 20:50:35 RE: Consultar con Crosstab
Previous Message Alejandro Carrillo 2012-04-19 17:49:48 Re: [pgsql-es-ayuda] ¿Como detecto si un UPDATE modifica un campo en especifico?