Re: Actualizar campos que tienen dependencias Foreign Key

From: Juan Carlos Medina Ruiz <jcmedinanix(at)gmail(dot)com>
To: José Fermín Francisco Ferreras <josefermin54(at)hotmail(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 20:53:42
Message-ID: 4b1941651001251253u74bc6e04y662d19aefab242ae@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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_productos
> FOR EACH ROW
> EXECUTE 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.
>
>
>
>
>
> ------------------------------
>
>
>
> ------------------------------
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rodolfo Vegas 2010-01-25 21:19:35 Importante
Previous Message José Fermín Francisco Ferreras 2010-01-25 17:26:30 RE: Actualizar campos que tienen dependencias Foreign Key