在液碱中添加'CONSTRAINT ensure_json CHECK (po_document IS JSON))'



我想将检查约束添加到Blob类型列中存储JSON数据,在liquibase中的创建表脚本中(版本3.3.5,数据库-Oracle 12c(。但是它没有编译。任何人都可以解释什么是添加约束的正确语法,以确保仅插入JSON类型数据。我遵循了这个问题普通SQL:CONSTRAINT ensure_json CHECK (po_document IS JSON))但是不确定什么是液体等效的。PostgreSQL检查液体中的约束

<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>

如果我在过滤器列中添加约束,则构建失败,如果我删除它,则构建成功。我究竟做错了什么。我在liquibase文档中找不到语法。

您无法在Liquibase中定义检查约束,有关ADITIONAL信息,请参阅此论坛条目。

您必须使用<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>标签。

最新更新