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>, Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Actualizar campos que tienen dependencias Foreign Key
Date: 2010-01-26 14:33:31
Message-ID: 4b1941651001260633x337ece7ctd5f03d6723537fb9@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.
>
>
>
>
> ------------------------------
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2010-01-26 15:30:41 Re: pregunta win -ubuntu
Previous Message Alvaro Herrera 2010-01-26 14:08:18 Re: Problema con pg_dump postgres 8.3 -postgres 8.4