【问题标题】:Adding 'CONSTRAINT ensure_json CHECK (po_document IS JSON))' in liquibase在 liquibase 中添加“CONSTRAINT ensure_json CHECK (po_document IS JSON))”
【发布时间】:2017-06-02 15:09:45
【问题描述】:

我想在 liquibase(版本 3.3.5,数据库 -Oracle 12C)的 CREATE Table 脚本中将检查约束添加到存储 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>

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

【问题讨论】:

    标签: liquibase oracle12c


    【解决方案1】:

    您不能在 liquibase 中定义检查约束,有关其他信息,请参阅 this forum entry

    您必须使用 &lt;sql&gt; 标签,例如

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

    应该是一样的,除了你必须添加你自己的&lt;rollback&gt;标签。

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      相关资源
      最近更新 更多