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.






                                          
 

                                          
_________________________________________________________________

Responder a