在liquibase

时间:2017-06-01 11:12:20

标签: liquibase oracle12c

我想在liquibase(版本3.3.5,数据库-Oracle 12C)的CREATE表脚本中添加检查约束到存储JSON数据的BLOB类型列。但它没有编译。任何人都可以解释什么是添加约束的正确语法,确保只插入JSON类型的数据。我跟着这个问题 普通sql:CONSTRAINT ensure_json CHECK (po_document IS JSON)) 但不确定什么是liquibase相当于此。 PostgreSQL Check Constraint in Liquibase

<changeSet id="Change_id" author="xqz">
        <createTable tableName="table_name">
            <column name="pkey" type="int">
                <constraints primaryKey="true"/>
            </column>
            <column name="table2_pkey" type="int">
                <constraints nullable="false"/>
            </column>
            <column name="name" type="varchar(100)">
                <constraints nullable="false"/>
            </column>
            <column name="filters" type="BLOB">
                <constraints checkConstraint="ensure_json CHECK (filters IS JSON)" />
            </column>
        </createTable>
    </changeSet>

如果我向filters列添加约束,则构建失败,如果我删除它,则构建成功。我究竟做错了什么。我在liquibase docs中找不到它的语法。

1 个答案:

答案 0 :(得分:1)

您无法在liquibase中定义检查约束,有关附加信息,请参阅this forum entry

您必须使用<sql>标记,例如

<sql dbms=oracle>
   CREATE TABLE table_name (
      pkey integer PRIMARY KEY,
      table2_pkey integer NOT NULL,
      name varchar(100) NOT NULL,
      flter blob CONSTRAINT ensure_json CHECK (filters IS JSON)
   )
</sql>

除了必须添加自己的<rollback>标记外,应该可以正常工作。