Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Modificar ENUM de una BD (que pasa si...?)

Estas en el tema de Modificar ENUM de una BD (que pasa si...?) en el foro de Mysql en Foros del Web. Hola!, estuve buscando bastante pero no encontré nada al respecto. Que pasa si cambio los valores de un ENUM en la estructura de mi Base ...
  #1 (permalink)  
Antiguo 10/07/2010, 17:51
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 18 años, 10 meses
Puntos: 11
Modificar ENUM de una BD (que pasa si...?)

Hola!, estuve buscando bastante pero no encontré nada al respecto.
Que pasa si cambio los valores de un ENUM en la estructura de mi Base de Datos?

Supongamos que tengo ENUM('hombre','mujer') y lo cambio a ENUM('masculino','femenino')

Todas mis filas que ya tenian el enum viejo se actualizan a los nuevos valores?

Y que pasa si agrego un valor: ENUM('hombre','mujer','animal')

Y si elimino un valor?

Saludos!!
  #2 (permalink)  
Antiguo 11/07/2010, 09:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Modificar ENUM de una BD (que pasa si...?)

Lo puedes cambiar solo si no tienes registros en la tabla. de lo contrario no te lo dejará cambiar. Va en contra de su propio funcionamiento.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 11/07/2010, 10:06
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 18 años, 10 meses
Puntos: 11
Respuesta: Modificar ENUM de una BD (que pasa si...?)

Bueno, estuve haciendo mis propias pruebas, estos son los resultados:

Si CAMBIAMOS los valores del enum (por ej. 'hombre' -> 'masculino')
entonces los campos que antes tenian 'hombre' quedan vacios.

Si VOLVEMOS a poner los valores originales del enum (por ej. 'masculino' -> 'hombre')
entonces igual los campos quedan vacios, no se recuperan los datos

Si cambiamos EL ORDEN de los valores del enum (por ej. 'hombre' -> 'mujer' y 'mujer'->'hombre')
entonces no pasa nada, todos los valores se conservan.

Si AGREGAMOS valores al enum (sin importar donde agreguemos, al principio final, medio)
entonces los valores anteriores que tengamos en la tabla se conservan

Asique como conclusión se me ocurre que si lo que queremos es en algun momento "cambiar" nuestros enums, por ej. pasar de hombre,mujer a masculino, femenino,animal estos serian los pasos:
1) AGREGAR masculino, femenino, animal al enum
2) REEMPLAZAR (con UPDATE) todos los hombre, por masculino, y los mujer por femenino
3) BORRAR del enum a hombre y mujer

Espero le sea de ayuda a alguien
Saludos !!
  #4 (permalink)  
Antiguo 11/07/2010, 10:23
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 18 años, 10 meses
Puntos: 11
Respuesta: Modificar ENUM de una BD (que pasa si...?)

hola huesos52, respondimos al mismo tiempo parece ^_^
Pero lo que yo encontré en mis pruebas es que SI se puede cambiar...

Aprovecho para dejar la solución que implementé en mi base de datos (no testeada aun pero supongo que debe funcionar).
En lugar de usar un ENUM que probablemente pueda cambiar en algun momento, lo que hice fue crear OTRA tabla (un ID, y un Varchar) donde guardo los valores del ENUM, y en lugar de usar un campo ENUM en mi tabla original, uso una clave foranea a esta nueva tabla con los enums.
Asi puedo actualizar los enums sin problemas, y manejar con ON UPDATE y ON DELETE lo que quiero que pase en caso de modificarlos.
  #5 (permalink)  
Antiguo 11/07/2010, 11:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Modificar ENUM de una BD (que pasa si...?)

Hola enridp
Gracias por compartir tus pruebas, pero sería recomendable que dijeras exacamente que pruebas hiciste, por que yo hice una pequeña prueba haciendo un ALTER TABLE a un campo enum en el cual la tabla ya tenia registros y no funcionaba. Al borrar los registros, probé nuevamente el alter table y si que funcionó.

cuentanos que ejemplo hiciste (Con codigo) para ver en que me pude haber equivocado.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 11/07/2010, 13:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 18 años, 10 meses
Puntos: 11
Respuesta: Modificar ENUM de una BD (que pasa si...?)

no lo hice con codigo, lo hice desde el phpmyadmin, la tabla es InnoDB
Cree una tabla con un iD y un Enum
Le meti 2 registros
Cambie los enum y quedaron vacios los campos
Cambie el orden de los enum (pero no los valores) y se mantuvieron los campos
Yo creo que si debería dejar modificar el ENUM, no veo por que no habria de permitirlo, que error te muestra?

Etiquetas: bd, enum, modificar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:45.