Skip site navigation (1) Skip section navigation (2)

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

From: =?iso-8859-1?B?QXJtYW5kbyBWZW5lZ2FzIFDpcmV6?=<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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group