Изменение значения значения MySQL ENUM во всей таблице

Мне интересно, можно ли изменить значение ENUM во всей таблице, так что во всех строках, где указано значение ENUM, это изменение сделано также.

Ответы

Ответ 1

Если вы хотите изменить значение перечисления:

Предположим, что ваш старый перечислитель:

ENUM('English', 'Spanish', 'Frenchdghgshd', 'Chinese', 'German', 'Japanese') 

Чтобы изменить это использование:

--  Add a new enum value
ALTER TABLE `tablename` CHANGE `fieldname` `fieldname` ENUM   
('English', 'Spanish', 'Frenchdghgshd', 'Chinese', 'German', 'Japanese', 'French');
-- Update the table to change all the values around.
UPDATE tablename SET fieldname = 'French' WHERE fieldname = 'Frenchdghgshd';
-- Remove the wrong enum from the definition
ALTER TABLE `tablename` CHANGE `fieldname` `fieldname` ENUM   
('English', 'Spanish', 'Chinese', 'German', 'Japanese', 'French');

MySQL, вероятно, проведет все строки в вашей таблице, пытаясь обновить материал, я слышал рассказы о планируемой оптимизации вокруг этого, но я не уверен, что это произошло на самом деле.