在DB2 LUW中,建议将表,索引和“长对象”(即LOB)放置在单独的表空间中。我们现有的SQL脚本具有以下行:
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的多个表空间。有什么办法吗?
您可以使用liquibase文档描述为的sql
更改:
'sql'标签允许您指定所需的任何sql。对于Liquibase的自动重构标签不支持的复杂更改,以及解决Liquibase的错误和局限性,它非常有用。sql标记中包含的SQL可以是多行。
看起来像这样(从liquibase文档复制):
<changeSet author="liquibase-docs" id="sql-example">
<sql dbms="h2, oracle"
endDelimiter="\nGO"
splitStatements="true"
stripComments="true">insert into person (name) values ('Bob')
<comment>What about Bob?</comment>
</sql>
</changeSet>
编辑:
阅读此答案后,看到了另一个选择。您可以使用modifySql
标签。也许省略表空间信息,然后像这样添加它(未经测试的代码-只是一个建议):
<createTable tableName="APPLICATIONTABLE">
<column name="APPLICATIONID" type="NUMBER(4, 0)">
<constraints nullable="false"/>
</column>
<column name="APPLICATIONNAME" type="VARCHAR(30)">
<constraints nullable="false"/>
</column>
<modifySql dbms="db2">
<append value=" IN USERSPACE1 INDEX IN USERSPACE2 LONG IN USERSPACE3"/>
</modifySql>
</createTable>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句