Hola interjsr:
Puedes asignarle a un campo INT la propiedad AUTO_INCREMENT, de tal manera que cada vez que se inserte un nuevo registro se asigne el siguiente valor definido para el contador, sin embargo, la parte de la eliminación no aplica, es decir, el campo AUTO_INCREMENT nunca se decrementa, independientemente de que se elimine el último registro. Sin embargo tengo que preguntarte ¿Qué beneficio te puede traer alterar el valor del campo autonumérico después de eliminar algún registro? Muchas veces hemos hablado en el foro de la insistencia de algunos desarrolladores de tener los id's de sus tablas de manera consecutiva, sin saltos, pero que esto NO ARROJA NINGÚN TIPO DE BENEFICIO, entonces insisto en preguntar por qué necesitas hacer lo que pretendes. Si la idea es numerar los registros, existen otras maneras para hacerlo...
Checa cualquiera de estas ligas:
http://craftycodeblog.com/2010/09/13...on-with-mysql/ http://forums.mysql.com/read.php?32,...665#msg-225665 http://www.artfulsoftware.com/infotree/queries.php
Ahora bien, volviendo a tu pregunta original, no existe una manera automática de hacer lo que quieres, aunque podrás implementar un trigger o un procedimiento almacenado para alterar el valor autoincrement. Checa este script:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.13 sec)
Query OK, 3 rows affected (0.06 sec)
+----+-------------+
| id | descripcion |
+----+-------------+
| 1 | uno |
| 2 | dos |
| 3 | tres |
+----+-------------+
Query OK, 1 row affected (0.08 sec)
+----+-------------+
| id | descripcion |
+----+-------------+
| 1 | uno |
| 2 | dos |
+----+-------------+
Query OK, 1 row affected (0.08 sec)
+----+-------------+
| id | descripcion |
+----+-------------+
| 1 | uno |
| 2 | dos |
| 4 | tres |
+----+-------------+
Query OK, 1 row affected (0.13 sec)
+----+-------------+
| id | descripcion |
+----+-------------+
| 1 | uno |
| 2 | dos |
+----+-------------+
Query OK, 2 rows affected (0.48 sec)
Query OK, 1 row affected (0.11 sec)
+----+-------------+
| id | descripcion |
+----+-------------+
| 1 | uno |
| 2 | dos |
| 3 | tres |
+----+-------------+
Aquí se muestra en primer lugar la problemática que comento al inicio. Después de eliminar el último registro (id=3), al insertarlo nuevamente le asigna el id=4, independientemente de que el id=3 esté disponible. Esto ocasiona un "salto" en la secuencia. Para "corregir" este comportamiento puedes hacer un ALTER TABLE a la tabla... aunque ESTO NO ES RECOMENDABLE EN ABSOLUTO. Además esto aplicaría sólo cuando se elimina el último de los id's... si se elimina un registro intermedio entonces YA NO APLICARÍA ESTA SOLUCIÓN. Lo que pretendes de reordenar a partir del registro eliminado todos los siguientes es una barbaridad, ya que no solo tendrías que cambiar los id's de esa tabla SINO LOS ID'S DE TODAS LAS TABLAS RELACIONADAS, trabajo que insisto
NO TE TRAE NINGÚN BENEFICIO.
Dale un vistazo y nos comentas
Saludos
Leo.