Ver Mensaje Individual
  #8 (permalink)  
Antiguo 17/03/2011, 12:56
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Como puedo controlar ids en una base de datos innoDB

En MySQL los comandos que inician y terminan transacciones son START TRANSACTION y COMMIT. ROLLBACK las deshace (15.10. Bloqueo y modelo de transacciones de InnoDB).
Lo esencial es que deben usarse al inicio del conjunto completo de operaciones que deseas manejar como operación atómica.
Esto es especialmente importante cunado vas a hacer varios insert que deben ser puestos en secuencia, no tanto en un SELECT. En el SELECT es importante saber cuán importante es la vigencia de la información leída, y si se leerá la información como segura o insegura (de allí el dirty read).
En otras palabras, si estás leyendo datos que pueden ser modificados en el proceso y quieres prevenirlo, cuando el usuario en curso los modifique o mande a modificarlos, antes de hacerlo hay que iniciar una transacción, volver a consultar el registro, y según el caso realizar o no la modificación, para luego asentar el cambio.
¿Se entiende hacia dónde va la idea?
No es simplemente que abras y cierres transacciones. Tienes que considerar cómo proceder si la transacción que vas a usar a su vez entra cuando otra está ocurriendo y se inició después de tu lectura inicial.

Mucho de este "despiole" se debe plantear en un diagrama de flujo antes de empezar a programar. Si intentas hacerlo mientras programas tarde o temprano te vas a perder en el código.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)