From: | José Fermín Francisco Ferreras <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 02:51:56 |
Message-ID: | COL103-W102179DD6D985616F9EEE9C65E0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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.
_________________________________________________________________
From | Date | Subject | |
---|---|---|---|
Next Message | Ing. Marcos L. Ortiz Valmaseda | 2010-01-26 08:00:48 | Sobre PostgreSQL 8.5 y 9.0 |
Previous Message | Juan Carlos Medina Ruiz | 2010-01-26 00:30:59 | Re: Actualizar campos que tienen dependencias Foreign Key |