Minha tabela atualmente possui uma coluna booleana, vamos chamá-la de coluna "importante", refletindo se um registro é urgente ou não. Desejo fazer a transição para o uso de uma coluna varchar que reflita a urgência de um registro como um dos poucos valores possíveis, como "normal", "urgente", "extremo". O nome da coluna precisa mudar para, então estou planejando fazer algo assim: crie uma nova coluna chamada "urgência" para manter o valor normal/urgente/extremo e migre seletivamente a data booleana existente para a nova coluna.
Esta é uma boa abordagem e há alguma pegadinha que devo observar?
No MySQL, o tipo de dados BOOLEAN realmente não existe. Se você criar algo assim:
Você verá que BOOLEAN é apenas um alias para tinyint(1):
E você pode até inserir um valor 2:
A maneira menos traumática, mas mais segura e flexível que posso imaginar é, em vez de criar um enum ou uma string, reutilize a coluna e defina uma chave estrangeira se estiver usando o InnoDB:
Dessa forma, você não pode inserir valores que não existem na tabela de níveis e pode adicionar valores posteriormente com muita facilidade (além disso, você não precisa reconstruir a tabela original).
Essa abordagem deve funcionar. No entanto, eu pessoalmente usaria ENUM ou TINYINT como tipo de dados para a coluna de urgência, ocupa menos espaço no banco de dados.