Sie müssen eine zu verwendende Umwandlung definieren, da keine Standardumwandlung verfügbar ist.
Wenn alle Werte in der varcharColumn
der Enum-Definition entsprechen, sollte Folgendes funktionieren:
alter table foo
ALTER COLUMN varcharColumn TYPE enum_type using varcharColumn::enum_type;
Ich persönlich mag Aufzählungen nicht, weil sie ziemlich unflexibel sind. Ich bevorzuge eine Check-Einschränkung für eine varchar-Spalte, wenn ich die Werte in einer Spalte einschränken möchte. Oder - wenn sich die Liste der Werte oft ändert und wächst - eine gute alte "Nachschlagetabelle" mit einer Fremdschlüsselbeschränkung.