Buenas,
Tengo una dudilla... estoy escribiendo un sistema de foros desde 0 (Que cuesta arriba se me está haciendo! Mas que nada por que cada dia hay mas lineas de codigo y eso me stresa jaja) y en una de las partes, tengo que incrementar en 1 o restarselo la cantidad de mensajes que tiene un cierto foro...
Para eso actualmente recojo el valor actual de los mensajes, le resto uno, y lo vuelvo a subir con un UPDATE.
Sé que todo eso se hace en cuestion de microsegundos, pero es posible que en los tiempos mas concurridos del foro al hacer 2 peticiones simultaneas se lien las operaciones... ? Vamos, que al momento de recojer el valor, otro lo incremente y yo haga el UPDATE con el valor erroneo.
Si fuera asi... Cual es la manera logica de hacer este tipo de operaciones?
Gracias.
Puedes utilizar esto:
UPDATE table SET valor = valor+1 WHERE....
Si tienes miedo a que algo se modifique mientras se ejecuta el codigo, puedes utilizar LOCK TABLES, aunque no te lo recomiendo...
Muchisimas gracias!
Usando esa buena tecnica de programacion me quito de encima bastantes lineas de codigo, y tambien bastantes accesos a la db...
Saludos!
EDITO:
Despues de muchos mareos de cabeza al incrementar decimales... Acuerdense de encerrar la operacion con parentesis!
Ejemplo:
UPDATE table SET valor = (valor+1.20) WHERE....