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: [email protected]
To: [email protected]
CC: [email protected]

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 
<[email protected]> 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: [email protected]
To: [email protected]
CC: [email protected]


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 
<[email protected]> 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: [email protected]
To: [email protected]
CC: [email protected]



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 <[email protected]> 
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 
<[email protected]> 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: [email protected]
To: [email protected]

>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!!
 

                                          
 

                                          
_________________________________________________________________

Responder a