Пока таблица пуста, проблем нет. Пока новые значения для ENUM добавляются и не переименовываются в заполненной таблице, опять же нет проблем.
ENUM, который вы переопределили в своем вопросе, на самом деле сохранил исходные внутренние значения для yes и no, как это было в прошлой тестовой таблице.
Следующее относится к заполненным таблицам:
Что насчет этого?
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
Большая проблема. В заполненной таблице да, может быть, сейчас. Новые строки, добавленные с помощью yes, отсоединяются от предыдущих строк yes, поскольку теперь они означают «возможно».
РЕЗЮМЕ
В MyISAM есть очень рискованные методы приманки и переключения, которые делают это очень быстро . Я настоятельно рекомендую не делать этого в InnoDB из-за его взаимодействия идентификатора табличного пространства с ibdata1.