Ver Mensaje Individual
  #8 (permalink)  
Antiguo 02/05/2005, 01:02
Avatar de Vice
Vice
 
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Fíjate Neuron, que en el ejemplo que tu pones no es el que yo indico. El caso que yo he expuesto implica que el campo autoincremental es secundario en un índice, es decir, que para buscar el maxid tendrías que hacer
select max(id) from tabla where campo=$valor
o, para ver todos los maxid (en este caso no hay uno para el camp, sino uno por grupo),
select campo, max(id) from tabla group by campo
donde campo sería el principal de un indice formado por "campo, id".
Es en este caso en el que el propio mysql realiza este cálculo de manera automática.

En cuanto a lo que indicas, si utilizas tablas innodb, en las que puedes realizar transacciones, se te solucionan los problemas que tú indicas.

De todas formas, ¿cuál es el problema?, ¿qué no exista ningún salto en la generación de los id de un campo?. Esto implica no borrar ningún registro, no sólo el último generado o, en su defecto, los borrados moverlos a otra tabla o marcarlos como borrados (borrado lógico, no físico). Esta es la única manera de no tener saltos en un campo secuencial.

Un saludo.
__________________
Estoy contagiado de Generación-I