doc ya halle la solución mil Gracias solo cambie el modo de evaluar a isnull porque el postgres en el boolean no cambia a false si no que establece el campo en blanco solo evalue de esa manera y todo quedo Ok Mil gracias por su tiempo
2010/1/26 José Fermín Francisco Ferreras <[email protected]> > > > ing. José Fermín Francisco Ferreras > San Francisco de Macorís, Rep. Dom. > > > > > ------------------------------ > Date: Tue, 26 Jan 2010 09:33:31 -0500 > > Subject: Re: [pgsql-es-ayuda] Actualizar campos que tienen dependencias > Foreign Key > From: [email protected] > To: [email protected]; [email protected] > > > Ante todo gracias por tu tiempo, pero te comento que es algo raro sigue sin > salirme el trigger. No actualiza la tabla grupos por mas que modifique el > estado del producto. > > 2010/1/25 José Fermín Francisco Ferreras <[email protected]> > > > > ing. José Fermín Francisco Ferreras > San Francisco de Macorís, Rep. Dom. > > > > > ------------------------------ > Date: Mon, 25 Jan 2010 19:30:59 -0500 > > Subject: Re: [pgsql-es-ayuda] Actualizar campos que tienen dependencias > Foreign Key > From: [email protected] > To: [email protected] > CC: [email protected] > > Las tablas son las sgtes > > *CREATE TABLE jmb_productos* > *(* > * idproducto smallint NOT NULL,* > * producto character varying(40) NOT NULL,* > * descripcion text,* > * idpadre smallint,* > * estado boolean,* > * CONSTRAINT pk_idproducto PRIMARY KEY (idproducto),* > * CONSTRAINT fk_padre_producto FOREIGN KEY (idpadre)* > * REFERENCES jmb_productos (idproducto) MATCH SIMPLE* > * ON UPDATE CASCADE ON DELETE CASCADE* > *)* > * > * > * > * > * > CREATE TABLE jmb_grupos > ( > idgrupo serial NOT NULL, > grupo character varying(10) NOT NULL, > idciclo smallint, > idproducto smallint, > idplan smallint, > fecha_inicio date NOT NULL, > fecha_fin date, > semestre character(1), > turno character(1), > seccion character(1), > estado boolean NOT NULL DEFAULT true, > CONSTRAINT pk_idgrupo PRIMARY KEY (idgrupo), > CONSTRAINT "FK_grupos_ciclo" FOREIGN KEY (idciclo) > REFERENCES jmb_ciclos (idciclo) MATCH SIMPLE > ON UPDATE NO ACTION ON DELETE NO ACTION > ) > WITH (OIDS=FALSE); > * > * > * > > > > Mi único problema fue q no mandaste la tabla ciclo o algo asi, pero, a > excepción d esto, estuve probando y a mi no me dio ningun problema el > trigger, funcionó bien. > Aquí t mando lo q hice: > > > -- Function: producto_eliminar_tri() > > -- DROP FUNCTION producto_eliminar_tri(); > > CREATE OR REPLACE FUNCTION producto_eliminar_tri() > RETURNS trigger AS > $BODY$ > > 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; > $BODY$ > LANGUAGE 'plpgsql' VOLATILE > COST 100; > ALTER FUNCTION producto_eliminar_tri() OWNER TO fermin; > > > Esta es la funcion dentro de la tabla jmb_productos: > > > -- Table: jmb_productos > > -- DROP TABLE jmb_productos; > > > CREATE TABLE jmb_productos > ( > idproducto smallint NOT NULL, > producto character varying(40) NOT NULL, > descripcion text, > idpadre smallint, > estado boolean, > CONSTRAINT pk_idproducto PRIMARY KEY (idproducto), > CONSTRAINT fk_padre_producto FOREIGN KEY (idpadre) > REFERENCES jmb_productos (idproducto) MATCH SIMPLE > ON UPDATE CASCADE ON DELETE CASCADE > ) > WITH (OIDS=FALSE); > ALTER TABLE jmb_productos OWNER TO fermin; > > -- Trigger: cambia_status on jmb_productos > > -- DROP TRIGGER cambia_status ON jmb_productos; > > CREATE TRIGGER cambia_status > AFTER UPDATE > ON jmb_productos > > FOR EACH ROW > EXECUTE PROCEDURE producto_eliminar_tri(); > > > Si sigues con dudas o tu caso se resuelve con esto me avisas o mejor lo > publicas en la lista para q todos puedan aprender d tu experiencia. > > > > > ------------------------------ > > creaste esta función dentro de la tabla de jmb_productos?? > > > CREATE TRIGGER cambia_status > AFTER UPDATE > ON jmb_productos > FOR EACH ROW > EXECUTE PROCEDURE producto_eliminar_tri(); > > ------------------------------ >
