2010-03-17 6 views
6

Tengo una tabla de valores, con una de las columnas del tipo SET.¿Cómo actualizo los miembros de un tipo de SET de MySQL?

Si actualmente tiene los miembros ('a', 'b', 'c', 'd'), ¿cómo agrego 'e' a los posibles valores?

que se dan cuenta de que el uso de un tipo SET es un poco extraño, y estoy claro por qué se podría utilizar en lugar de una clave externa a otra tabla con los valores del conjunto, pero no diseñó la base de datos de pregunta, y no puede cambiar tanto.

Gracias por su ayuda!

ACTUALIZACIÓN: Quiero actualizar el tipo de conjunto de todos los filas, no sólo uno, si eso ayuda.

Respuesta

5

Si desea añadir 'e' a los valores permitidos en ese campo de conjunto, o ya está allí y quieres agregar 'e' al valor actual del campo de conjunto en esa tabla?

Si no es ya un valor permitido, entonces usted tendrá que hacer un ALTER TABLE y redefinir el campo:

ALTER TABLE set_test CHANGE myset myset SET('a','b','c','d','e'); 

(sí, 'MYSET' se pone en allí dos veces, se trata de un "currentname newname "tipo de cosas.)

De lo contrario, simplemente haga una TABLA DE ACTUALIZACIÓN y concat el campo con 'e' como dice la respuesta anterior.

7

Para agregar un elemento a un SET existente use la función CONCAT() para agregar el nuevo elemento a su lista separada por comas. Para trabajar con valores decimales, podemos usar el operador OR bit a bit |.

UPDATE set_test SET myset = CONCAT(myset,",Travel") 
     WHERE rowid = 3; 

o

UPDATE set_test SET myset = myset | 1 WHERE rowid = 3; 

También puede utilizar la función CONCAT_WS(), que se encarga de separadores de lista para nosotros:

UPDATE set_test SET myset = CONCAT_WS(',',myset,'Dancing') 
     WHERE rowid = 6; 
+0

Pero esto es para una fila, ¿eliminaría la cláusula WHERE agregar 'Viajar' a la lista de posibilidades para filas nuevas? – Riddari

+1

sí, esto es para una sola fila. Pruébelo sin la cláusula where y vea qué sucede. Supongo que lo agrega a todas las filas. Usaría el método concat() sin una cláusula where. – northpole

Cuestiones relacionadas