Search code examples
postgresqlliquibaseliquid-layout

enum data type for liquibase


I'm currently working on a liquibase.xml file to create table table_a. One of my fields is <column name="state" type="ENUM('yes','no')"> I'm using postgresql as my DBMS. is there anything like enum data type? I've read in this like http://wiki.postgresql.org/wiki/Enum

that postgresql doesn't have such data type. CREATE TYPE function is used to create this data type. I still don't know how to make it in liquibase though.

Any suggestions?


Solution

  • Well of course PostgreSQL has an enum type (which is clearly documented in the link you have shown and the manual).

    I don't think Liquibase "natively" supports enums for PostgreSQL, but you should be able to achieve it with a custom SQL:

    <changeSet id="1" author="Arthur">
      <sql>CREATE TYPE my_state AS ENUM ('yes','no')</sql>
      <table name="foo">
        <column name="state" type="my_state"/>
      </table>
    </changeSet>
    

    For a simple yes/no column, I'd actually use the boolean type instead of an enum