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_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$ > > > > 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; > > > > > ------------------------------ > > > > > ------------------------------ >
