Esta es la solucion que mas se hacerca a lo que estaba intentando hacer, pero 
no me parece muy buena solucion, por eso la razon de mi pregunta. Si bien la 
solucion se obtiene no me parece el metodo mas elegante y mantenible.

Gracias

Javier
  ----- Original Message ----- 
  From: Matias Q 
  To: [email protected] 
  Sent: Tuesday, February 13, 2007 1:12 PM
  Subject: [puntonet] Concurrencia en DB


  No conozco el soporte de Stored de MySQL pero podes hacer el checkeo dentro 
de un mismo Stored y luego la insercion, como vos pusiste en ese ejemplo:
   
  CREATE PROCEDURE Insertar
  (
   @Cantidad tinyint,
   @parametros tipo,
   @parametros tipo,...
   @parametroOUTPUT tipo OUTPUT
  )
  AS
  SET NOCOUNT ON
   
  IF @Cantidad <= (SELECT Saldo FROM Tabla WHERE condicion)
   BEGIN
   INSERT...
   SELECT @parametroOUTPUT=1
   END
  ELSE
   SELECT @parametroOUTPUT=0
   
   
   
  Como dije, no conozco como MySQL soporta Stored Procedures pero asi es mas o 
menos como podes crear el SP que chequee la condicion y puede retornar un 1 o 
un 0 , o lo que se te ocurra, puede ser un texto tambien.
   
   






----------------------------------------------------------------------------
    From: [EMAIL PROTECTED]
    To: [email protected]
    Subject: [puntonet] Concurrencia en DB
    Date: Tue, 13 Feb 2007 12:13:19 -0300


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





------------------------------------------------------------------------------
  Live Search: New search found Try it! 

Responder a