2017-06-01 5 views
0

liquibase(バージョン3.3.5、データベース-Oracle 12C)のCREATE TableスクリプトにJSONデータを格納するBLOB型の列にcheck制約を追加します。コンパイルされません。 JSON型のデータだけが挿入されることを保証する制約を追加する正しい構文は何ですか?私はこの質問に続きました プレーンsql:CONSTRAINT ensure_json CHECK (po_document IS JSON)) しかし、これと同等のliquibaseは何ですか。 PostgreSQL Check Constraint in Liquibaseliquibaseの '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を参照してください。

あなたは、あなた自身の<rollback>のタグを追加することが必要であることを除いて、全く同じ動作するはず

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

よう<sql>タグを使用する必要があります。

関連する問題