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