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.

Responder a