2010-03-17 13 views
6

Ho una tabella di valori, con una delle colonne di tipo SET.Come aggiornare i membri di un Tipo SET MySQL?

Se attualmente ha i membri ('a', 'b', 'c', 'd'), come faccio ad aggiungere 'e' ai possibili valori?

Mi rendo conto che l'utilizzo di un tipo SET è un po 'strano, e non sono chiaro perché lo si utilizzerebbe al posto di una chiave esterna in un'altra tabella con i valori del set, ma non ho progettato il database in domanda, e non può cambiarlo più di tanto.

Grazie per il vostro aiuto!

UPDATE: voglio aggiornare il tipo SET per tutti le righe, non solo uno, se questo aiuta.

risposta

5

Si desidera aggiungere 'e' per i valori consentiti in quel campo impostato, o è già lì e vuoi aggiungere 'e' al valore corrente del campo impostato in quella tabella?

Se non è già un valore consentito, allora dovrete fare un ALTER TABLE e ridefinire il campo:

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

(sì, 'myset' viene messo in due volte, si tratta di un "currentname newname "sorta di cosa.)

Altrimenti basta fare una TABELLA AGGIORNAMENTO e concatenare il campo con 'e' come dice la risposta precedente.

7

Per aggiungere un elemento a un SET esistente, utilizzare la funzione CONCAT() per aggiungere il nuovo elemento all'elenco separato da virgole. Per lavorare con valori decimali, possiamo usare l'operatore 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; 

È inoltre possibile utilizzare la funzione CONCAT_WS(), che gestisce i separatori di elenco per noi:

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

Ma questo è per una riga, rimuovere la clausola WHERE aggiungere "Viaggio" all'elenco delle possibilità per le nuove righe? – Riddari

+1

sì, questo è per una singola riga. Provalo senza la clausola where e vedi cosa succede. La mia ipotesi è che lo aggiunge a tutte le righe. Vorrei usare il metodo concat() senza una clausola where. – northpole

Problemi correlati