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:20:49
Message-ID: CAE57xECwtNnpJ+2g4KO2sZuQ3AmuYGrrN4Vc9kzdKTD+aB2OTg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Silvio Bravo Cadó 2011-10-11 00:30:59 Re: Bloqueo de tablas o transacciones
Previous Message SYSWARP - Carlos Enrique Perez 2011-10-10 23:38:09 Re: Usar copy en JDBC