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;



                                          


 



                                          
_________________________________________________________________

Responder a