Re: Bloqueo de tablas o transacciones

From: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
To: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Bloqueo de tablas o transacciones
Date: 2011-10-11 13:42:00
Message-ID: 1318340520.3976.YahooMailNeo@web27407.mail.ukl.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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ó <bravocado(at)gmail(dot)com>
Para: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
CC: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
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ó <bravocado(at)gmail(dot)com>

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 <fasterzip(at)yahoo(dot)es>
>
>
>>
>>Por favor responder si la pregunta solucionó tu inquietud
>>
>>
>>________________________________
>> De: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
>>Para: Silvio Bravo Cadó <bravocado(at)gmail(dot)com>
>>CC: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
>>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ó <bravocado(at)gmail(dot)com>
>>Para: postgre sql <pgsql-es-ayuda(at)postgresql(dot)org>
>>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.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Silvio Bravo Cadó 2011-10-11 13:46:12 Re: Bloqueo de tablas o transacciones
Previous Message Alejandro Carrillo 2011-10-11 13:37:43 Re: Usar copy en JDBC