Ali*_*oub 9 postgresql liquid-layout liquibase
我目前正在使用liquibase.xml文件来创建表table_a.我的一个领域是<column name="state" type="ENUM('yes','no')">
我使用postgresql作为我的DBMS.有什么像枚举数据类型?我在这里读过http://wiki.postgresql.org/wiki/Enum
postgresql没有这样的数据类型.CREATE TYPE函数用于创建此数据类型.我仍然不知道如何在liquibase中制作它.
有什么建议?
a_h*_*ame 19
当然,PostgreSQL有一个枚举类型(在你显示的链接和手册中清楚地记录了).
我不认为Liquibase"本机"支持PostgreSQL的枚举,但您应该能够使用自定义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>
对于一个简单的是/否列,我实际上使用的是boolean类型而不是枚举
创建新类型的替代方法是对varchar(3)列进行简单的 CHECK 约束:
<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>
Run Code Online (Sandbox Code Playgroud)
这可能对客户端来说效果更好,也可能不是。我认为boolean(正如 a_horse_with_no_name 所建议的)对于这种特定情况来说是一个更好的选择:准确地说出你的意思通常比其他选择更有效。