Как я обновляю членов MySQL SET Type?

У меня есть таблица значений с одним из столбцов, являющихся НАБОРА типа.

Если это в настоящее время имеет участников ('b', 'c', 'd'), как я добавляю 'e' к возможным значениям?

Я понимаю, что использование типа НАБОРА является немного странным, и я неясен, почему можно было бы использовать его вместо внешнего ключа к другой таблице со значениями набора, но я не разработал рассматриваемую базу данных, и не могу изменить ее так очень.

Спасибо за помощь!

ОБНОВЛЕНИЕ: Я хочу обновить тип НАБОРА для всех строк, не всего один, если это помогает.

11
задан Riddari 17 March 2010 в 19:58
поделиться

2 ответа

Вы хотите добавить 'e' к допустимым значениям в этом заданном поле, или оно уже есть, и вы хотите добавить 'e' к текущему значению поля набора в этой таблице?

Если это еще не допустимое значение, вам придется выполнить ALTER TABLE и переопределить поле:

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

(да, 'myset' вставляется дважды, это типа "currentname newname".)

В противном случае просто выполните ОБНОВЛЕНИЕ ТАБЛИЦЫ и объедините поле с 'e', ​​как сказано в предыдущем ответе.

7
ответ дан 3 December 2019 в 07:37
поделиться

Чтобы добавить элемент к существующему множеству, используйте функцию CONCAT() для добавления нового элемента в список, разделенный запятыми. Для работы с десятичными значениями можно использовать оператор побитового ИЛИ |.

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

или

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

Вы также можете использовать функцию CONCAT_WS(), которая обрабатывает для нас разделители списка:

  UPDATE set_test SET myset = CONCAT_WS(',',myset,'Dancing')
      WHERE rowid = 6;
9
ответ дан 3 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: