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: [email protected]
To: [email protected]
CC: [email protected]

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

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.

                                          
_________________________________________________________________

Responder a