我想在liquibase(版本3.3.5,数据库-Oracle 12C)的CREATE表脚本中添加检查约束到存储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>
如果我向filters列添加约束,则构建失败,如果我删除它,则构建成功。我究竟做错了什么。我在liquibase docs中找不到它的语法。
答案 0 :(得分: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>
标记外,应该可以正常工作。