Upgrading a varchar column to enum type in postgresql

前端 未结 3 1613
别跟我提以往
别跟我提以往 2020-12-09 09:15

We have a varchar column in a table, that we need to upgrade to enum type.

All the values in the varchar column are valid values in the enumeration. There is no null

3条回答
  •  囚心锁ツ
    2020-12-09 09:52

    You need to define a cast to be used because there is no default cast available.

    If all values in the varcharColumn comply with the enum definition, the following should work:

    alter table foo 
      ALTER COLUMN varcharColumn TYPE enum_type using varcharColumn::enum_type;
    

    I personally don't like enums because they are quite unflexible. I prefer a check constraint on a varchar column if I want to restrict the values in a column. Or - if the list of values changes often and is going to grow - a good old "lookup table" with a foreign key constraint.

提交回复
热议问题