在整个表中更改MySQL ENUM值的值

时间:2011-09-22 05:23:00

标签: mysql database-design enums

我想知道是否可以在整个表中更改ENUM值,以便在表示所述ENUM值的所有行中也进行更改。

1 个答案:

答案 0 :(得分:25)

如果要更改枚举值:

假设您的旧枚举是:

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可能会通过你表格中的所有行来尝试更新内容,我听说有关计划优化的故事,但我不确定这是否真的发生了。