Тип данных enum для ликвидазы

В настоящее время я работаю над файлом liquibase.xml для создания таблицы table_a. Одно из моих полей <column name="state" type="ENUM('yes','no')">Я использую postgresql в качестве моей СУБД. Есть ли что-нибудь, как тип данных enum? Я читал в этом как http://wiki.postgresql.org/wiki/Enum

что postgresql не имеет такого типа данных. Функция CREATE TYPE используется для создания этого типа данных. Я до сих пор не знаю, как сделать это в жидкости.

Какие-либо предложения?

2 ответа

Решение

Ну, конечно, PostgreSQL имеет тип enum (который четко задокументирован в приведенной вами ссылке и руководстве).

Я не думаю, что Liquibase "изначально" поддерживает перечисления для PostgreSQL, но вы должны быть в состоянии достичь этого с помощью специального SQL:


  CREATE TYPE my_state AS ENUM ('да','нет')
  
  

Для простого столбца да / нет, я бы на самом деле использовал boolean введите вместо перечисления

Альтернативой созданию нового типа было бы простое ограничение CHECK для varchar(3) колонка:

<changeSet id="1" author="X">
    <table name="t">
        <column name="c" type="varchar(3)"/>
    </table>
    <sql>ALTER TABLE t ADD CONSTRAINT check_yes_no CHECK (c = 'yes' OR c = 'no')</sql>
</changeSet>

Это может лучше сыграть на стороне клиента или нет. Я думаю boolean (как предложено a_horse_with_no_name) было бы лучшим вызовом для этого конкретного случая: сказать, что именно вы имеете в виду, обычно получается лучше, чем альтернативы.

Другие вопросы по тегам