їHay alguna forma de hacer esto en MySQL? -
The_Scope - 23.01.2013
Hola, resulta que estoy creando un sistema de vehнculos en MySQL y lo estoy haciendo dinбmico, pero para cargar los vehнculos los cargo mediante una columna llamada id. Lo que quiero es que esa columna se adapte automбticamente, es decir: si creo 1 vehнculo se pondrб con la id 1, si creo otro mas seguido a ese se creara con la id 2, y si elimino uno de los dos y luego creo otro mas, se pondrб con la id 3, lo que quiero es que se ponga con la id 2 xD, no se si me entienden.
Explicaciуn por si no entienden xD:
1- Creo 1 vehiculo
2- Creo otro vehiculo
3- Elimino un vehiculo
4- Creo Otro vehiculo
El vehнculo creado en el paso 4 se crea con la id 3 ves de la 1.
Desde ya muchas gracias!
Respuesta: їHay alguna forma de hacer esto en MySQL? -
Fluid016 - 23.01.2013
Si.
En la base de datos ponele AUTO_INCREMENT (AI) a esa columna.
Respuesta: їHay alguna forma de hacer esto en MySQL? -
elvago - 23.01.2013
Quote:
Originally Posted by Daniel-92
para evitar ese problema se usa la i del bucle como indice en el enum y la ID de la casa se guarda en una variable.
pawn Код:
for(new i=0; i < num_rows; i++) { cache_get_field_content(i,"Owner",HouseInfo[i][House_Owner],HANDLE); cache_get_field_content(i,"ID",HouseInfo[i][House_ID],HANDLE); }
|
https://sampforum.blast.hk/showthread.php?tid=395819
Respuesta: їHay alguna forma de hacer esto en MySQL? -
CaptainMactavish - 23.01.2013
Код:
UPDATE tabla SET ID=ID-1 WHERE ID > id
DELETE FROM tabla WHERE ID=id
La primera consulta lo que hace es retroceder un nъmero atras a todas las IDs que sean mayor a id (ID que ingresaste para borrar). La segunda elimina de la tabla la ID que seleccionaste.
Yo te dн las consultas para que puedas elaborar el cуdigo, si con eso no te es suficiente, decilo en el post y te doy un ejemplo si no sabes como manejarte con MySQL.
EDIT:Ah, ahora entiendo el autoincrement no te deja poner la ID del que eliminaste.
Entonces tenйs que setear el autoincrement.
Код:
ALTER TABLE tabla AUTO_INCREMENT=Apartir de que id queres que se cree
Respuesta: їHay alguna forma de hacer esto en MySQL? -
The_Scope - 23.01.2013
Gracias por responder.
Quote:
Originally Posted by CaptainMactavish
Код:
UPDATE tabla SET ID=ID-1 WHERE ID > id
DELETE FROM tabla WHERE ID=id
La primera consulta lo que hace es retroceder un nъmero atras a todas las IDs que sean mayor a id (ID que ingresaste para borrar). La segunda elimina de la tabla la ID que seleccionaste.
Yo te dн las consultas para que puedas elaborar el cуdigo, si con eso no te es suficiente, decilo en el post y te doy un ejemplo si no sabes como manejarte con MySQL.
EDIT:Ah, ahora entiendo el autoincrement no te deja poner la ID del que eliminaste.
Entonces tenйs que setear el autoincrement.
Код:
ALTER TABLE tabla AUTO_INCREMENT=Apartir de que id queres que se cree
|
Lo que me pasa es que si ya tengo 100 vehнculos creados (un ej), y elimino el id 50, luego le altero la tabla como dijiste yno cambian todas las id del 50 al 100, lo ъnico que hace es que si creo un vehнculo nuevo se cree con la id 101.
No se si me entiendes, pero no me ha resultado :S
PD: La columna ID tiene un AUTO_INCREMENT
Respuesta: їHay alguna forma de hacer esto en MySQL? -
CaptainMactavish - 23.01.2013
Entonces:
Код:
SELECT LAST_INSERT_ID()
//Esto te va a devolver la ъltima ID
ALTER TABLE tabla AUTO_INCREMENT=Lo que te devuelva la consulta de arriba menos 1, ya que habian 100 autos y ahora hay 99
UPDATE tabla SET ID=ID-1 WHERE ID > 50
//Retrocede las ID de todos que sean mayor a 50, el 51 va a pasar a ser 50, 52 a 51, y asi sucesivamente
Respuesta: їHay alguna forma de hacer esto en MySQL? -
The_Scope - 23.01.2013
Quote:
Originally Posted by CaptainMactavish
Entonces:
Код:
SELECT LAST_INSERT_ID()
//Esto te va a devolver la ъltima ID
ALTER TABLE tabla AUTO_INCREMENT=Lo que te devuelva la consulta de arriba menos 1, ya que habian 100 autos y ahora hay 99
UPDATE tabla SET ID=ID-1 WHERE ID > 50
//Retrocede las ID de todos que sean mayor a 50, el 51 va a pasar a ser 50, 52 a 51, y asi sucesivamente
|
Muchнsimas gracias Captain.
TEMA RESUELTO