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