RE: Actualizar campos que tienen dependencias Foreign Key

From: José Fermín Francisco Ferreras <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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-es-ayuda by date

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