PDA

Ver la Versión Completa : Autoincrement con tablas innodb


Alexis De la Cr
01-08-2006, 02:33:39
Estimados Amigos:

Solicito su ayuda para resolver el siguiente detalle.

Tengo una tabla del Tipo InnoDB, con un campo con indice primario y autoincrementable, el problema es que requiero que el valor del indice primario, comienze en un determinado valor. Cuando utilizaba tablas tipo isam, simplemente modificaba manualmente el valor del campo, desde donde queria que iniciara. Con las tablas InnoDB es mas complejo ya que estas tablas tienen un contador interno, el cual, para acabarla de amolar, se reinicia cuando se reinicia el servidor. Que consejos me dan para poder asegurar el incrmento. Estoy pensando en crear una tabla donde se lleve el valor que debe tomar el campo con indice primario. Bueno le agradecere sus ayuda prestada.

Alexis De la Cruz

roman
01-08-2006, 03:05:08
Pues no entiendo muy bien cuál es el problema. Acabo de hacer una prueba con una tabla InnoDb y un campo autoincremental. Si hago un INSERT especificando un valor concreto para el campo autoincremental, el registro toma ese valor y partir de eso las subsecuentes inserciones parten de ese valor. Claro está que ese valor concreto debe ser mayor que el mayor valor actual del campo.

// Saludos

Alexis De la Cr
01-08-2006, 04:52:53
Hola roman, gracias por contestar. Mira te explico, realize un porgrama de facturacion que utilizaba tablas myisam. El numero de factura se almacena en un campo con indice primario(yo lo llamo IDFactura al campo) autoincremantable. cuando cree la primera factura, el valor del campo IDFactura era 1, pero necesitaba que comenzara por ejemplo en la factura 3000, asi que manualmente cambie el valor de 1 por el de 3000, y a partir de ahi, los siguientes registros comienzan en 3001, 3002, etc. (ojo, yo no le asigno el valor IDFactura a la factura, la misma tabla me da el valor subsecuente cuando hago el insert)

Ahora (tratando de hacer mas confiable la aplicacion), cambie el tipo de tablas a innodb, por aquello de las transacciones. cuanbdo cree la primera factura, su valor idfactura era 1, pero necesito que el valor de idFactura sea 5000, asi que modifico manualmente el valor de 1 por el de 5000, pero las subsecuentes facturas que se hacen, en ves de comenzar en 5001, siguen su numeracion normal, es decir 2, 3, 4, 5 y de ahi no lo saco. Me imagino que si yo le asigno el valor idfactura manualmente no hay ningun problema, pero el objetivo es que el mismo sistema me arroje automaticamente la numeracion de las faccturas, por eso estoy pensando en una tabla donde me lleve el consecutivo de las facturas, de tal forma que cuando haga el insert lea primero el numero de factura correspondiente. Es correcto este metodo? o hay una forma mas sencilla?

Espero haber podido explicar bien mi problema

roman
01-08-2006, 06:52:01
Te explicas perfectamente. Lo que pasa es que no entiendo por que no te está funcionando. Con la instrucción:


alter table tabla auto_increment=5000


los subsecuentes registros deberían ser 5000, 5001, 5002, etc. Así lo acabo de probar. Lo que sí es que no estoy seguro de que un campo autoincremental realmente te sirva ya que en cuestión de facturas muchas veces es requisito que no haya "hoyos" en la numeración y con transacciones, cuando cancelas una, el autoincremental que le correspondía queda sin usar.

// Saludos