Изменение значения MySQL ENUM по всей таблице - PullRequest
15 голосов
/ 22 сентября 2011

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

1 Ответ

25 голосов
/ 22 сентября 2011

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

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

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вероятно, пройдут все строки в вашей таблице, пытаясь обновить материал, я слышал истории о запланированной оптимизации вокруг этого, но я не уверен, действительно ли это произошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...