Re: Bloqueo de tablas o transacciones

From: Silvio Bravo Cadó <bravocado(at)gmail(dot)com>
To: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
Cc: "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 00:30:59
Message-ID: CAE57xEBr3kWRfDcCZn3znp1EgOjx+pxW5mmQ1rCBXLVDtu9yEw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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* <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.

In response to

Responses

Browse pgsql-es-ayuda by date

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