Creo que lo de la duda del bloque deberia quedar conque pusiera dentro de una transaccion todos los inserts de las materias del bloque y listo cierto?.
Un saludo. 2011/10/10 Silvio Bravo Cadó <[email protected]> > Muchas gracias por la pronta respuesta, me parece muy buena idea lo del > trigger, asi queda super bien. Solo me queda una duda y es como sabre que se > ha llenado el cupo, simplemente porque no se inserto? o tal vez tendria que > poner un listener para escuchar que hubo algun cupo lleno. > > Ahora tengo otro problema, como podria hacer todo esto en un bloque, por > ejemplo necesito que un bloque de materias se registren pero si una de ese > bloque llega a cupo limitado se haga un rollback de todo el bloque, se > podria? > > > > De antemano muchas gracias. > > Un saludo. > > > 2011/10/10 Alejandro Carrillo <[email protected]> > >> >> Por favor responder si la pregunta solucionó tu inquietud >> ------------------------------ >> *De:* Alejandro Carrillo <[email protected]> >> *Para:* Silvio Bravo Cadó <[email protected]> >> *CC:* "[email protected]" <[email protected]> >> *Enviado:* lunes 10 de octubre de 2011 13:34 >> *Asunto:* Re: [pgsql-es-ayuda] Bloqueo de tablas o transacciones >> >> Puedes resolverlo con un "tigre", es la solución que dan los motores de >> bd sobre estos casos. Como cosa rara, aqui un ejemplo hecho y probado por >> mi: >> >> create or replace function fn_datoslimitados() returns trigger as $$ >> declare >> conteousu numeric; >> begin >> select count(*) into conteousu from public.grupos_usuarios ug where >> ug.codgrupo = new.codgrupo; >> if conteousu >= 10 then >> raise 'Datos suficientes'; >> end if; >> RETURN new; >> end; >> $$ >> language plpgsql; >> >> drop TRIGGER trg_nroreg ON public.grupos_usuarios ; >> >> CREATE TRIGGER trg_nroreg AFTER INSERT or UPDATE >> ON public.grupos_usuarios FOR EACH row >> EXECUTE PROCEDURE fn_datoslimitados (); >> >> >> ------------------------------ >> *De:* Silvio Bravo Cadó <[email protected]> >> *Para:* postgre sql <[email protected]> >> *Enviado:* lunes 10 de octubre de 2011 11:45 >> *Asunto:* [pgsql-es-ayuda] Bloqueo de tablas o transacciones >> >> Saludos lista, nuevamente molestandolos con lo siguiente: estamos >> desarrollando un sistema escolar en el que permitimos la inscripcion de >> alumnos a un grupo en especifico, pero se da el caso que el grupo tien un >> cupo limitado por ejemplo, solo permite 20 o 30 alumnos por grupo, por lo >> que se requiere evitar que un grupo se cargue con mas alumnos del que debe. >> Cabe mencionar que el sistema es web y que los alumnos se inscriben a traves >> del sistema por lo que habra concurrencia de conexion a la db posiblemente >> intentanto inscribirse al mismo grupo y se tiene que evitar que el grupo se >> sobre sature. Para resolver esto se me ocurrio utilizar lock tables con el >> fin de bloquear la tabla de inscripcion para evitar que un grupo se llene >> con mas de lo debido, pero no se si es la mejor forma de resolverlo, ya que >> imagino tendre problemas de latencia por el caso de que muchos usuarios >> quieran inscribirse y esten bloqueados hasta que se valla desbloqueando la >> tabla, la verdad no he hecho antes nada con lock table y quisiera saber si >> alguien ya ha resuelto algun caso parecido o el mismo. >> >> De antemano muchas gracias. >> >> Un saludo. >> >> >> -- >> * >> >> >> Ing. Silvio Bravo Cadó* >> Desarrollo de Software >> *Tlaltek S.A de C.V* <http://tlaltek.com> >> (229) 9 2 1 1 3 2 6 ext. 102. >> Veracruz, México. >> >> >> >> >> >> > > > -- > * > > > Ing. Silvio Bravo Cadó* > Desarrollo de Software > *Tlaltek S.A de C.V* <http://tlaltek.com> > (229) 9 2 1 1 3 2 6 ext. 102. > Veracruz, México. > > -- * Ing. Silvio Bravo Cadó* Desarrollo de Software *Tlaltek S.A de C.V* <http://tlaltek.com> (229) 9 2 1 1 3 2 6 ext. 102. Veracruz, México.
