/* select count(*) from "Zalamero_actividad" where proyecto_id = 2 select count(*) from "Zalamero_actividad" where proyecto_id = 2 and estatus = True select * from "Zalamero_actividadesusuario" select * -- delete from "PASO"; */ DROP FUNCTION TerminaActividad() cascade; CREATE FUNCTION TerminaActividad() RETURNS trigger AS $TerminaActividad$ BEGIN -- contamos las actividades por usuario y las comparamos con las actividades completadas if (select count(*) from "Zalamero_actividadesusuario" where actividad_id = NEW.actividad_id) > 0 then if ( (select count(*) from "Zalamero_actividadesusuario" where actividad_id = NEW.actividad_id) = (select count(*) from "Zalamero_actividadesusuario" where actividad_id = NEW.actividad_id and terminado = True ) ) then update "Zalamero_actividad" set estatus = True where id = NEW.actividad_id; else update "Zalamero_actividad" set estatus = False where id = NEW.actividad_id; end if; end if; return NEW; END; $TerminaActividad$ LANGUAGE plpgsql; CREATE TRIGGER TerminaActividad after INSERT OR UPDATE ON "Zalamero_actividadesusuario" FOR EACH ROW EXECUTE PROCEDURE TerminaActividad(); ALTER FUNCTION TerminaActividad() OWNER TO "Produccion";