2017-06-01 144 views
0

我想在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在liquibase中添加'CONSTRAINT ensure_json CHECK(po_document IS JSON))'

<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文档中找到它的语法。

回答

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>标签。

相关问题