MySQL - No guarda algunos registros

   
Vista:

No guarda algunos registros

Publicado por Ruben Arboleda (2 intervenciones) el 25/09/2017 17:44:02
Saludos!

Tengo un web en local con xampp, realizxada con php y mysql, a la hora de guardar algunos registros no se almacenan correctamente; me explico:

tabla_nombres:
id------nombre----identificacion
1-------Demo1----111111
2-------Demo2-----22222
3-------Demo3-----3333
5-------Demo4-----44444

El script me funciona bien, pero a la hora de insertar en la base de datos se salta algunos id, teniendo en cuenta que esta columna es autoincrement... que paso con el id 4

Como puedo solucionar este inconveniente.

Agradezco su colaboración

éxitos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

No guarda algunos registros

Publicado por leonardo_josue (388 intervenciones) el 25/09/2017 21:56:18
Hola Ruben Arboleda:

Aquí valdría la pena antes de tratar de encontrar alguna posible explicación de por qué el salto en el campo autoincremental preguntarte ¿en qué te afecta el que se haya brincado el id=4?

Muchas veces la respuesta de los foristas a esta pregunta es porque dicen que necesitan numerar los registros... mucho ojo, son dos cosas muy distintas tener un campo llave como incremental y otra es tenerlos numerados consecutivamente.

Una de las razones por las que puede haber ocurrido el "brinco" es implemente porque el registro correspondiente a la posición 4 se haya borrado... aquí un ejemplo, imagina que creas unas tabla con un campo autoincremental e insertas cuatro registros, así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mysql> create table tabla (
    -> id int unsigned auto_increment primary key,
    -> campo varchar(20));
Query OK, 0 rows affected (0.22 sec)
 
mysql> insert into tabla values (null, 'uno'), (null, 'dos'), (null, 'tres'), (null, 'cuatro');
Query OK, 4 rows affected (0.17 sec)
Records: 4  Duplicates: 0  Warnings: 0
 
mysql> select * from tabla;
+----+--------+
| id | campo  |
+----+--------+
|  1 | uno    |
|  2 | dos    |
|  3 | tres   |
|  4 | cuatro |
+----+--------+
4 rows in set (0.05 sec)

Ahora, eliminamos el último registro:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> delete from tabla where id=4;
Query OK, 1 row affected (0.17 sec)
 
mysql> select * from tabla;
+----+-------+
| id | campo |
+----+-------+
|  1 | uno   |
|  2 | dos   |
|  3 | tres  |
+----+-------+
3 rows in set (0.00 sec)

Observa que el último id es 3, pero ¿qué pasa si insertamos un nuevo registro a la tabla?

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> insert into tabla values (null, 'cuatro');
Query OK, 1 row affected (0.04 sec)
 
mysql> select * from tabla;
+----+--------+
| id | campo  |
+----+--------+
|  1 | uno    |
|  2 | dos    |
|  3 | tres   |
|  5 | cuatro |
+----+--------+
4 rows in set (0.00 sec)

el id que le asigna NO ES EL 4, SINO EL 5... esto fue porque aunque el ID=4 está "disponible", en realidad el contador de la tabla ya está en el id=5... de hecho, tú puedes cambiar arbitrariamente el siguiente valor del autoincremental:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mysql> alter table tabla AUTO_INCREMENT = 100;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
mysql> select * from tabla;
+----+--------+
| id | campo  |
+----+--------+
|  1 | uno    |
|  2 | dos    |
|  3 | tres   |
|  5 | cuatro |
+----+--------+
4 rows in set (0.00 sec)
 
mysql> insert into tabla values (null, 'cinco');
Query OK, 1 row affected (0.13 sec)
 
mysql> select * from tabla;
+-----+--------+
| id  | campo  |
+-----+--------+
|   1 | uno    |
|   2 | dos    |
|   3 | tres   |
|   5 | cuatro |
| 100 | cinco  |
+-----+--------+
5 rows in set (0.00 sec)

pero insisto, el hecho de que los id's no sean consecutivos ¿TE AFECTA EN ALGO?

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No guarda algunos registros

Publicado por Ruben Arboleda (2 intervenciones) el 25/09/2017 23:16:06
Saludos, leonardo_josue

Gracias por la respuesta...

La afectación es que ejecuté 5 veces el script para el ejemplo anterior y solo me almacenó 4 valores

id------nombre----identificación
1-------Demo1----111111
2-------Demo2-----22222
3-------Demo3-----3333
5-------Demo4-----44444

De igual manera borre todos los datos y ejecuté el script 20 veces y solo me guardó 12 registros.. pero el id si va incrementando.

Agradezco su ayuda

Éxitos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad