Skip site navigation (1) Skip section navigation (2)

RE: Actualizar campos que tienen dependencias Foreign Key

From: =?iso-8859-1?B?Sm9z6SBGZXJt7W4gRnJhbmNpc2NvIEZlcnJlcmFz?=<josefermin54(at)hotmail(dot)com>
To: <jcmedinanix(at)gmail(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 17:00:33
Message-ID: COL103-W18CBF24E35811B8D84D8B5C65E0@phx.gbl (view raw or flat)
Thread:
Lists: pgsql-es-ayuda


ing. José Fermín Francisco Ferreras 
San Francisco de Macorís, Rep. Dom. 




Date: Tue, 26 Jan 2010 11:42:54 -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

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

Mi hermano, me alegro q hayas resuelto tu problema,pero no estoy deacuerdo con eso q dices de q Postgresql no pone los campos en false, verifica con psql, para q veas q si los pone false.

 		 	   		  
_________________________________________________________________

In response to

pgsql-es-ayuda by date

Next:From: Jaime CasanovaDate: 2010-01-26 17:15:45
Subject: Re: Sobre PostgreSQL 8.5 y 9.0
Previous:From: Juan Carlos Medina RuizDate: 2010-01-26 16:42:54
Subject: Re: Actualizar campos que tienen dependencias Foreign Key

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group