Hola Javier,
 
Con InnoDB tenes soporte de transacciones.
 
Por otra parte (en mi opinion) no deberias solucionar esto en la base de datos.
Como ya dijo Leonardo, es posible que la reaccion de la aplicacion ante una
falta de stock pueda variar en funcion del tipo de venta, del tipo de cliente,
etc. Si esto ocurre va a ser muy dificil solucionarlo en la base de datos
(cualquiera sea).
 
Sobre todo si esto depende de preferencias del usuario que el mismo pueda
configurar.
 
En cuanto al  bloqueo en la logica de negocios, podes usar los mecanismos
usuales de bloqueo de .NET (teniendo en cuenta todos los  cuidados que aplican)
usados normalmente en aplicaciones multithread.
 
Carlos


  _____  

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of MYMTEC S.A.
- Javier Wamba
Sent: Martes, 13 de Febrero de 2007 12:13 p.m.
To: [email protected]
Subject: !-> [puntonet] Concurrencia en DB


Carlos:
Efectivamente estoy utilizando innoDB, vos decis que con eso me deberia
alcanzar. A ver si logro entenderte.
Lo que yo nesecito es enviar a la base de datos lo siguiente:
 
SET @cantidad=15;
SET @SALDO=(consulta que me devuelve el saldo);
 
IF @SALDO >= @cantidad THEN
    (sentencias que insertan los datos)
END IF
 
 
¿Como hago esto, con un stored?
 
No uso ORM.
 
Muchisimas gracias.
 
Javier Wamba
 
 
 

----- Original Message ----- 
From: Carlos Peix <mailto:[EMAIL PROTECTED]>  
To: [email protected] 
Sent: Tuesday, February 13, 2007 11:46 AM
Subject: [puntonet] Concurrencia en DB

Por supuesto, otra opcion es utilizar bloqueos a nivel de la logica de negocios.
Pero para utilizar esta opcion probablemente debas alterar este codigo y la
efectividad depende de si la base de datos es de uso exclusivo de la aplicacion
o no (puede haber otros procesos actualizando las mismas tablas).
 
Carlos


  _____  

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of MYMTEC S.A.
- Javier Wamba
Sent: Martes, 13 de Febrero de 2007 11:12 a.m.
To: [email protected]
Subject: !-> [puntonet] Concurrencia en DB


Buenas,
Tengo el siguiente problema, tal vez alguien me pueda ayudar.
Tengo una aplicacion ASP.net 2.0 y necesito insertar registros en la base de
datos solo si hay saldo al momento de la insercion.
El tema es asi, tengo una tablas donde se guarda el total que hay de cada
articulo y tengo otra tabla donde se guarda el consumo de dichos articulos, en
un momento dado yo le muestro al usuario los articulos que tiene disponibles y
su saldo para la oparacion que quiere realizar, pero, cuando el usuario elija el
articulo a utilizar y complete la cantidad a consumir puede que el saldo que le
mostraba ya no sea real, es decir, otro usuario de otra terminal consumio de ese
articulo y lo dejo con menos saldo. Entonces lo que nesecito es preguntar antes
de escribir, pero preguntar no en la aplicacion sino en la base de datos
bloqueando la tabla para que entre la pregunta y el insert no pase nada. 
¿que tecnicas se utilizan para esto o como se hace?
El bloqueo de tablas no me sirve porque si se desconectan queda bloqueada la
tabla.
Le comunico que trabajo con MySQL igual imagino que un ejenplo con SQLServer me
sirve tambien y sino yo me  encargo de adaptarlo.
Cualquier pregunta o aclaracion sobre el contenido de este correo pregunten
tranquilos
 
Muchisimas gracias.
 
Javier Wamba
 
 
 

Responder a