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();
>
> ------------------------------
>

Responder a