Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/04/2011, 09:52
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: Reserva de autoincremento

Cita:
creo que es un tema como que muy amplio para un caso tan especifico como el mio.
El problema es que precisamente tu problema está inscripto completamente en el tema transacciones.
Haciendo una visión simple, cuando declaras una transacción todas las sentencias DML de tipo INSERT/UPDATE/DELETE entran como condicionales, lo que quiere decir que los cambios producidos a las tablas no existen en forma definitiva hasta que la transacción completa no se confirma. Además, toda operación DML de un usuario concurrente queda en espera hasta que la transacción que usa las tablas no termine (confirmada o cancelada). Las´únicas operaciones accesibles son los SELECT, los cuales a su vez son inseguros hasta el final, por lo que ciertas cosas deben ser reconfirmadas cuando se liberan.
Como los autoincrementales son parte de este proceso, el uso de transacciones es una forma segura de resolver tu problema. Con el uso de tablas InnoDB el tema de la "próxima clave" tiene un capítulo propio en el Manual de referencia: MySQL Reference Manual::15.10.6. Bloqueo de la próxima clave (Next-Key Locking): evitar el problema fantasma. El método descripto creo que es suficientemente simple para que lo uses...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)