在DB2 LUW中,表、索引和“长对象”(即LOB)应该放置在不同的表空间中,这是recommended。
CREATE TABLE "APPLICATIONTABLE"(
APPLICATIONID INTEGER NOT NULL,
APPLICATIONNAME VARCHAR(30) NOT NULL
)IN USERSPACE1 INDEX IN USERSPACE2 LONG IN USERSPACE3;
在变更集中,我们可以指定一个表空间:
<createTable tableName="APPLICATIONTABLE" tablespace="${tablespace.data}">
<column name="APPLICATIONID" type="NUMBER(4, 0)">
<constraints nullable="false"/>
</column>
<column name="APPLICATIONNAME" type="VARCHAR(30)">
<constraints nullable="false"/>
</column>
</createTable>
但是,就我所知,DB2的多个表空间并不是这样。
3条答案
按热度按时间yhxst69z1#
您可以使用
sql
change,liquibase文档将其描述为:“sql”标记允许您指定所需的任何sql。它对于Liquibase的自动重构标记不支持的复杂更改以及解决Liquibase的错误和限制非常有用。sql标记中包含的SQL可以是多行的。
它看起来像这样(从liquibase文档复制):
编辑:
在阅读了这个answer之后,我看到了另一个选项。你可以使用
modifySql
标记。也许可以省略表空间信息,然后像这样附加它(未经测试的代码-只是一个建议):bt1cpqcv2#
这是Liquibase的Datical扩展所支持的,但Liquibase本身不支持。
4ktjp1zp3#
我知道这是6岁,但我想我会张贴这作为另一个可能的解决方案。
然后在命令行上定义表空间名称。