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. _________________________________________________________________
RE: [pgsql-es-ayuda] Actualizar campos que tienen dependencias Foreign Key
José Fermín Francisco Ferreras Mon, 25 Jan 2010 18:52:15 -0800
- [pgsql-es-ayuda] Actualizar campos que ti... Juan Carlos Medina Ruiz
- RE: [pgsql-es-ayuda] Actualizar camp... José Fermín Francisco Ferreras
- Re: [pgsql-es-ayuda] Actualizar ... Juan Carlos Medina Ruiz
- Re: [pgsql-es-ayuda] Actuali... Juan Carlos Medina Ruiz
- RE: [pgsql-es-ayuda] Act... José Fermín Francisco Ferreras
- Re: [pgsql-es-ayuda... Juan Carlos Medina Ruiz
- RE: [pgsql-es-a... José Fermín Francisco Ferreras
- Re: [pgsql-... Juan Carlos Medina Ruiz
- RE: [pgsql-... José Fermín Francisco Ferreras
- Re: [pgsql-... Juan Carlos Medina Ruiz
- RE: [pgsql-... José Fermín Francisco Ferreras
- Re: [pgsql-... Juan Carlos Medina Ruiz
- RE: [pgsql-... José Fermín Francisco Ferreras
- Re: [pgsql-... Juan Carlos Medina Ruiz
- RE: [pgsql-... José Fermín Francisco Ferreras
- RE: [pgsql-... José Fermín Francisco Ferreras
