1) El bloque si se puede. Igual el trigger debe generar una excepcion y luego haces rollback de la transaccion cuando genere un error. 2) Por favor escribir unicamente a la lista de email, ya que si se escribe al destinatario y a la lista a la vez se tienen 2 correos de la misma información. Gracias
________________________________ De: Silvio Bravo Cadó <[email protected]> Para: Alejandro Carrillo <[email protected]> CC: "[email protected]" <[email protected]> Enviado: lunes 10 de octubre de 2011 19:30 Asunto: Re: [pgsql-es-ayuda] Bloqueo de tablas o transacciones 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 >>(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 >(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 (229) 9 2 1 1 3 2 6 ext. 102. Veracruz, México.
