ayuda campo con auto increment

Iniciado por Siempre Azul, 8 Julio 2013, 21:57 PM

0 Miembros y 1 Visitante están viendo este tema.

Siempre Azul

hola amigos bueno resulta que tengo en phpmyadmin un campo ID en auto_increment y pues por ejemplo tengo:

1-LIBRO 1
2-LIBRO 2

pero cuando yo borro LIBRO 2
y intento agregar un libro nuevo, me aparece

1-LIBRO 1
3-LIBRO 2

ves como ven me puso el numero 3 envez del 2, como hago para que no suceda eso?

gracias de antemano.
Siempre Azul, Nunca Rojo.

1mpuls0

Qué se supone que esperaba que hiciera? xD

Hay varias formas de hacerlo (hasta cierto punto)
Una es seleccionar el último id y sumarle uno.

Código (sql) [Seleccionar]

select max(id)+1 AS siguiente_id from tabla;


Código (sql) [Seleccionar]

SELECT LAST_INSERT_ID(id)+1 AS siguiente_id FROM tabla;


Debes tener cuidado cual vas a utilizar, lo digo por la cuestion de multiusuarios.

Saludos.
abc

Siempre Azul

por favor ayudame amigo, no me sirvio, modifico como pusiste tu en el phpmyadmin y me sale el numero 2 y cuando ingreso el dato nuevo me sale:

1-LIBRO 1
0-LIBRO 2
Siempre Azul, Nunca Rojo.

1mpuls0

#3
Lo que quiero decir es que tienes que quitar la propiedad autoincrement al campo, aunque también es posible dejando esta propiedad pero no tiene caso si al final vas a colocar un valor calculado.

Después de eso tienes que hacer una consulta para conocer el valor de tu último id

Código (sql) [Seleccionar]

select max(id) AS siguiente_id from libros


Supongo que estás utilizando además un lenguaje de programación, entonces lo que tienes que hacer es comparaciones.

*Pseudocódigo
if(resultado=NULL)
siguiente_id=1
else
siguiente_id=resultado+1


Entonces ahora tienes el valor de tu siguiente id a insertar.

Código (sql) [Seleccionar]

insert into libros values(siguiente_id, 'titulo');


Espero haberme explicado mejor.

Saludos.
abc

Siempre Azul

hola amigo dime exactamente como hacerlo no se entiende lo que has puesto:

lo puse asi:

SELECT MAX(id)+1 AS sig_id FROM libros;
INSERT INTO libros (id) VALUE('sig_id')

y no sirve marca el numero 0 y no agrega mas nada

lo puse asi tampoco sirve marca error en 'titulo':

SELECT MAX(id) AS siguiente_id FROM libros
INSERT INTO libros VALUES(siguiente_id, 'titulo');

Siempre Azul, Nunca Rojo.

1mpuls0

xD
Es broma?, lo que yo te puse es un ejemplo, no sé como se llaman tus campos.

Hasta pronto!
abc

Siempre Azul

Cita de: Darhius en  9 Julio 2013, 04:15 AM
xD
Es broma?, lo que yo te puse es un ejemplo, no sé como se llaman tus campos.

Hasta pronto!

que se supone que va en titulo?
Siempre Azul, Nunca Rojo.

peib0l

Cita de: shitoman en  9 Julio 2013, 14:47 PM
que se supone que va en titulo?

colega empieza a aprender bien de SQL porque asi no....