Тип данных 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 ('да','нет') sql>
Table> Набор изменений> Для простого столбца да / нет, я бы на самом деле использовал
2011-02-27 13:47boolean
введите вместо перечисления2011-02-27 18:16Альтернативой созданию нового типа было бы простое ограничение 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) было бы лучшим вызовом для этого конкретного случая: сказать, что именно вы имеете в виду, обычно получается лучше, чем альтернативы.