From: | Silvio Bravo Cadó <bravocado(at)gmail(dot)com> |
---|---|
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:46:12 |
Message-ID: | CAE57xEBnGmiX7afDfUqCnJiLPmT=YwZYOLPJrFuwaUzboqGEVg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Muchas gracias por la ayuda y una disculpa por lo del correo.
Un saludo.
2011/10/11 Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
>
> 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* <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.
>
>
>
>
--
*
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 | manuel antonio ochoa | 2011-10-11 14:38:04 | Manejo de funciones |
Previous Message | Alejandro Carrillo | 2011-10-11 13:42:00 | Re: Bloqueo de tablas o transacciones |