Re: Bloqueo de tablas o transacciones

From: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
To: Silvio Bravo Cadó <bravocado(at)gmail(dot)com>
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-10 18:34:56
Message-ID: 1318271696.95193.YahooMailNeo@web27404.mail.ukl.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Espartano 2011-10-10 19:21:53 Duda sobre conexiones hacia postgresql.
Previous Message Alvaro Hilario 2011-10-10 18:34:08 Re: Bloqueo de tablas o transacciones