Поки таблиця порожня, проблем немає. Поки нові значення для ENUM додаються та не перейменовуються за допомогою заповненої таблиці, знову немає проблем.
ENUM, який ви переосмислили у своєму запитанні, насправді зберігав початкові внутрішні значення "так" і "ні", оскільки тестова таблиця востаннє запам'ятала це.
До заселених таблиць відноситься наступне:
Як що до цього?
ALTER TABLE `test`
CHANGE `bool` `bool` ENUM( 'no', 'yes', 'maybe' )
CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
Тепер у вас є проблема. Значення ENUM у повністю заповненій таблиці змінили б їх внутрішні значення, так що так, зараз немає ні, а зараз немає так.
Як що до цього?
ALTER TABLE `test`
CHANGE `bool` `bool` ENUM( 'maybe', 'no', 'yes' )
CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
Велика проблема. У заселеній таблиці так, можливо, зараз це можливо. Нові рядки, вставлені з "Так", від'єднуються від попередніх рядків "Так", тому що вони означають, можливо.
ПІДСУМОК
Існують дуже високоризикові методи приманки і перемикання, щоб зробити це дуже швидко в MyISAM . Я б настійно не радив робити це в InnoDB через взаємодію ідентифікатора простору таблиць з ibdata1.