Re: Actualizar campos que tienen dependencias Foreign Key

From: Juan Carlos Medina Ruiz <jcmedinanix(at)gmail(dot)com>
To: José Fermín Francisco Ferreras <josefermin54(at)hotmail(dot)com>
Cc: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Actualizar campos que tienen dependencias Foreign Key
Date: 2010-01-26 16:42:54
Message-ID: 4b1941651001260842g64923bf7of16de72b9959d29a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 <josefermin54(at)hotmail(dot)com>

>
>
> 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: jcmedinanix(at)gmail(dot)com
> To: josefermin54(at)hotmail(dot)com; pgsql-es-ayuda(at)postgresql(dot)org
>
>
> 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 <josefermin54(at)hotmail(dot)com>
>
>
>
> 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: jcmedinanix(at)gmail(dot)com
> To: josefermin54(at)hotmail(dot)com
> CC: pgsql-es-ayuda(at)postgresql(dot)org
>
> 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();
>
> ------------------------------
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message José Fermín Francisco Ferreras 2010-01-26 17:00:33 RE: Actualizar campos que tienen dependencias Foreign Key
Previous Message José Fermín Francisco Ferreras 2010-01-26 16:12:44 RE: Problema con pg_dump postgres 8.3 -postgres 8.4