Row level lock in plpgsql

From: "Juan P(dot) Aviles" <jputem(at)yahoo(dot)es>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Row level lock in plpgsql
Date: 2005-04-06 20:20:58
Message-ID: 20050406202059.61770.qmail@web26204.mail.ukl.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola amigos :

Este es mi primer mensaje a la lista ojala puedan ayudarme.

Mi problema es el siguiente tengo una tabla en la que llevo el stock de productos de la siguiente manera:

cod_prod
cantidad_actual
cantidad_mov
cantidad_total
registro(timestamp)
(mas otros campos que son irrelevantes)

simulando las viejas tarjetas de existencia, es decir se registra el producto que tuvo aumento o disminucion de stock , la cantidad actual del producto en stock, la cantidad que aumentara o disminuira y la cantida total despues del movimiento asi como la fecha y hora del mismo.

Los movimiento los genero asi, cada vez que un producto tiene movimiento ( aumento o disminucion) aumento en este ejemplo (plpgsql) hago un

Select Into reg * from stock where cod_prod = 'producto' order by registro desc;
IF Found THEN
cantidad_actual := reg.saldo_total;
cantidad_mov := $2;
cantidad_total := cantidad_actual + cantidad_mov;
registro:= ''now'';

INSERT INTO stock (cod_prod ,
cantidad_actual ,
....
......);
END IF;


Mi duda era , que pasa si dos procediemientos llegan al mismo tiempo a la parte del select con un mismo producto?, segun las pruebas que hice ambos toman el mismo valor de reg.saldo_total, y queda la escoba .

Lo que necesito es bloquear la fila que me devuelve el select hasta que haga el incremento o disminucion y el posterior insert en la tabla , estuve leyendo la documentacion y me encontre con row level lock que es posible utilizando el select for update, lo probe y no me funciono.

Busque en internet y me encontre ha alguien que dice que no se pueden hacer select for update en plpgsql.


¿que opinan ?

¿Como puedo lograr lo deseado???


Ojala halla sido claro en mi explicacion



Juan Pablo Aviles


---------------------------------

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ivan Figueroa 2005-04-06 20:23:11 Re: problemas con el registro del EMS pgsql
Previous Message Fher 2005-04-06 20:19:06 Re: Pgdump sin GRANT