Postgresql liquibase的枚举数据类型

Postgresql liquibase的枚举数据类型,postgresql,liquibase,liquid-layout,Postgresql,Liquibase,Liquid Layout,我目前正在处理一个liquibase.xml文件来创建表a。我的一个字段是 我正在使用postgresql作为我的DBMS。是否有类似于枚举数据类型的内容? 我读过这样的文章 postgresql没有这样的数据类型。创建类型函数用于创建此数据类型。但我仍然不知道如何在liquibase中制作 有什么建议吗 当然,PostgreSQL有一个枚举类型(在您显示的链接和手册中有明确的文档记录) 我不认为Liquibase“本机”支持PostgreSQL的枚举,但您应该能够通过自定义SQL实现它: &l

我目前正在处理一个liquibase.xml文件来创建表a。我的一个字段是
我正在使用postgresql作为我的DBMS。是否有类似于枚举数据类型的内容? 我读过这样的文章

postgresql没有这样的数据类型。创建类型函数用于创建此数据类型。但我仍然不知道如何在liquibase中制作


有什么建议吗

当然,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> 创建类型my_state作为枚举('yes','no')
对于一个简单的yes/no列,我实际上会使用
boolean
类型而不是enum

创建新类型的替代方法是对
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>

ALTER TABLE t添加约束检查\u是\u否检查(c='yes'或c='no')

这可能会更好地与客户端合作,也可能不会。我认为,
boolean
(正如一个没有名字的马所建议的那样)对于这种特殊情况来说是一个更好的称呼:准确地说出你的意思通常比其他选项更有效。

我同意:检查约束可能比枚举约束更好。你可以使用“检查约束”根据Liquibase文档:这似乎表明情况并非如此:在Liquibase中执行自定义sql时,提供回滚命令也是一种很好的做法@1in9ui5t它不工作!!!Liquibase文档()上没有“enum”类型。