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

RE: Actualizar campos que tienen dependencias Foreign Key

From: =?iso-8859-1?B?Sm9z6SBGZXJt7W4gRnJhbmNpc2NvIEZlcnJlcmFz?=<josefermin54(at)hotmail(dot)com>
To: <jcmedinanix(at)gmail(dot)com>
Cc: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Actualizar campos que tienen dependencias Foreign Key
Date: 2010-01-25 23:45:46
Message-ID: COL103-W1602DF8B4C5C600F78849BC65F0@phx.gbl (view raw or flat)
Thread:
Lists: pgsql-es-ayuda


ing. José Fermín Francisco Ferreras 
San Francisco de Macorís, Rep. Dom. 




Date: Mon, 25 Jan 2010 15:53:42 -0500
Subject: Re: [pgsql-es-ayuda] Actualizar campos que tienen dependencias 	Foreign Key
From: jcmedinanix(at)gmail(dot)com
To: josefermin54(at)hotmail(dot)com
CC: pgsql-es-ayuda(at)postgresql(dot)org

Nada doctor. te comento que mi campo estado es un boolean al parecer no lo esta evaluando. solo evalua hasta la linea del UPDATE si es que le quito esta linea IF(OLD.estado = false) THEN  entonces si evalua siempre y cuando se modifique cualquier campo. Sin embargo yo quiero que se modifique cuando el estado de los productos sea falso que podra ser??? ya he intentando de varias maneras


El 25 de enero de 2010 12:26, José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com> escribió:








ing. José Fermín Francisco Ferreras 
San Francisco de Macorís, Rep. Dom. 




Date: Mon, 25 Jan 2010 12:04:23 -0500
Subject: Re: [pgsql-es-ayuda] Actualizar campos que tienen dependencias 	Foreign Key

From: jcmedinanix(at)gmail(dot)com
To: josefermin54(at)hotmail(dot)com
CC: pgsql-es-ayuda(at)postgresql(dot)org


No asume la condicion   if (new.campo = false) then ni con new ni con OLD

El 25 de enero de 2010 11:43, José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com> escribió:









ing. José Fermín Francisco Ferreras 
San Francisco de Macorís, Rep. Dom. 




Date: Mon, 25 Jan 2010 09:54:31 -0500
Subject: Re: [pgsql-es-ayuda] Actualizar campos que tienen dependencias 	Foreign Key


From: jcmedinanix(at)gmail(dot)com
To: josefermin54(at)hotmail(dot)com
CC: pgsql-es-ayuda(at)postgresql(dot)org



ejecute eso que les expongo abajo, pero no me actualiza la tabla grupos al parecer la segunda condicion IF(OLD.estado = false) THEN no esta asumiendola, mi pregunta es como hago para especificar que cuando en la tabla productos el campo estado de uno de ellos pase a false, en las otras tablas donde este relacionado ese producto tbm cambien el estado a false. Muchas gracias de antemano




El 25 de enero de 2010 09:48, Juan Carlos Medina Ruiz <jcmedinanix(at)gmail(dot)com> escribió:



Holas mira estuve haciendo esto porque lo que yo quiero es que se actualize la tabla2 cuando en la tabla1 se cambie el estado a false  segun ese false que esta basado en un  boolean que me sirve para eliminar logicamente 




CREATE FUNCTION producto_eliminar_tri()	RETURNS trigger	AS $$
	BEGIN		IF(TG_OP = 'UPDATE') THEN			IF(OLD.estado = false) THEN
				UPDATE jmb_grupos SET estado='false' where idproducto=OLD.idproducto;			END IF;
		END IF;		RETURN NULL;	END;
	$$	Language 'plpgsql';

CREATE TRIGGER eliminar_productos_dependencias
AFTER UPDATE on jmb_productosFOR EACH ROWEXECUTE PROCEDURE producto_eliminar_tri();



El 25 de enero de 2010 09:35, José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com> escribió:










ing. José Fermín Francisco Ferreras 
San Francisco de Macorís, Rep. Dom. 




Date: Mon, 25 Jan 2010 08:42:06 -0500
Subject: [pgsql-es-ayuda] Actualizar campos que tienen dependencias Foreign Key




From: jcmedinanix(at)gmail(dot)com
To: pgsql-es-ayuda(at)postgresql(dot)org

>saludos una consulta. Quiero borrar de una tabla llamada productos un producto(cuando digo >borrar me refiero a actualizar su estado de true a false). Pero resulta que este producto tiene >muchas dependencias es llamado or otras tablas. Como dar de baja a ese producto haciendo >que todas las dependencias pasen de true  a  false. Atraves de un trigger(maneja potsgres >triggers). Porque el update on cascade no me serviria en este caso ya que no estoy actualizando >el id si no un campo diferente a este todas las tablas manejan campo estado el cual es true si >esta activo y false si esta eliminado. Gracias por su colaboracion de antemano.








Podrias probar esto, lo hice medio rapido, si tiene errores tendrias q corregirlo, pero creo va por donde quieres.



CREATE OR REPLACE FUNCTION esquema.cambiar_status()
 RETURNS trigger




 LANGUAGE plpgsql
AS $function$
begin
        UPDATE tabla SET
          campo = false
          where codigo=new.codigo;
        return new;
end;
$function$



Prueba esto en tu trigger




    if (new.campo = false) then
               
                UPDATE facturacion.factura_articulo set
                elcampo = false
                WHERE elcodigo = new.codigo;
        end if;



        return new;



 		 	   		  





Es bastante raro, ve a ver si esto t funciona:

CREATE FUNCTION producto_eliminar_tri()
	RETURNS trigger	AS $$
	BEGIN		IF(TG_OP = 'UPDATE') THEN			IF(new.estado = false) THEN

				UPDATE jmb_grupos SET estado='false' where idproducto=new.idproducto;			END IF;
		END IF;		RETURN new;	END;
	$$	Language 'plpgsql';

En caso de q no t funcione manda las tablas involucradas y los triggers q tengas hasta el momento para probar.







 		 	   		  

Manda las tablas para ver q es lo q esta pasando!!
 

 		 	   		  
 

 		 	   		  
_________________________________________________________________

In response to

Responses

pgsql-es-ayuda by date

Next:From: Juan Carlos Medina RuizDate: 2010-01-26 00:30:59
Subject: Re: Actualizar campos que tienen dependencias Foreign Key
Previous:From: Rodolfo VegasDate: 2010-01-25 21:19:35
Subject: Importante

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