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 17:26:30
Message-ID: COL103-W3583E684ECD59422BBFD4BC65F0@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 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.



_________________________________________________________________

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan Carlos Medina Ruiz 2010-01-25 20:53:42 Re: Actualizar campos que tienen dependencias Foreign Key
Previous Message Juan Carlos Medina Ruiz 2010-01-25 17:04:23 Re: Actualizar campos que tienen dependencias Foreign Key