我想将检查约束添加到Blob类型列中存储JSON数据,在liquibase中的创建表脚本中(版本3.3.5,数据库-Oracle 12c(。但是它没有编译。任何人都可以解释什么是添加约束的正确语法,以确保仅插入JSON类型数据。我遵循了这个问题普通SQL:CONSTRAINT ensure_json CHECK (po_document IS JSON))
但是不确定什么是液体等效的。PostgreSQL检查液体中的约束
<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中定义检查约束,有关ADITIONAL信息,请参阅此论坛条目。
您必须使用<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>
标签。