Ver Mensaje Individual
  #7 (permalink)  
Antiguo 27/12/2014, 18:31
dimas18
 
Fecha de Ingreso: noviembre-2010
Mensajes: 70
Antigüedad: 14 años
Puntos: 0
Respuesta: Obtener siguiente Indice Incremental

Muyt claro todo lo comentado, y si me sirven los documentos que me colocaste acerca del bloqueo, actualizacion y demas, lo voy a leer detenidamente para aplicarlo,
gracias por tu asistencia.



Cita:
Iniciado por gnzsoloyo Ver Mensaje
No. El ingreso de empleados, usuarios, artículos y otras cosas de ese tipo son el tipo de altas que se hacen de forma esporádica, y donde no es relevante la secuencialidad de lo identificadores autoincrementales. En realidad el análisis de las altas para antigüedad o precedencia se hace en base a la fecha de alta, que siempre se guarda como DATETIME o TIMESTAMP para eso. Por otro lado recuerda que ese tipo de datos son de uso administrativo interno a la emrpesa, en cambio la facturación no.
Además, las interfases desde donde se hacen esas altas son de uso muy restringido, es decir, no todos los usuarios deben poder dar de alta un artículo, ni a otro usuario. Por eso esas funcionalidades solo se usan de forma puntual, e incluso de se pueden hacer de modo diferido.
En cambio los proceso de facturación siempre tienen impacto inmediato, por lo que su secuencialidad es fundamental.

Ahora bien, una nota. En los casos donde el sistema no tenga concurrencia, o bien donde haya un manejo de transacciones muy bueno, de todos modos es posible usar métodos que te permitan administra los autoincrementales, si usas tablas InnoDB.
Requiere leer el manual de referencia, que está en inglés:
[url]http://dev.mysql.com/doc/refman/5.7/en/innodb-record-level-locks.html[/url]
[url]http://dev.mysql.com/doc/refman/5.7/en/innodb-next-key-locking.html[/url]

Lo que sí NUNCA debes hacer es usar sentencias DDL como ALTER TABLE para realizar modificaciones como las que hacías. Son riesgosas, innecesarias, y además cualquier sentencia DDL que se ejecute generará un COMMIT implícito para todas las transacciones en curso, lo que podría dejar asentadas operaciones que no deben confirmarse, y hacer caer en error todas las transacciones que se estén ejecutando, si la llamada a su inicio y finalziación la manejas en la aplicación.