2017-06-01 81 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>標籤。