使用Liquibase在DB2 LUW中创建视图

时间:2017-10-12 08:18:14

标签: db2 liquibase db2-luw

我使用Liquibase 3.5.3在DB2 LUW 11.0中创建视图。 我设置" replaceIfExists"属性为true,在运行时它给我一个"在db2"上不允许使用replaceIfExists;错误。

我知道Liquibase中的DB2不支持这个属性,但是数据库api允许它(我用create或replace手动执行sql脚本并且工作正常)。

在DB2中运行此脚本有一些解决方法,或者您可以实现此功能吗?

示例:

CREATE OR REPLACE myView AS (
    SELECT * FROM myTable
)

1 个答案:

答案 0 :(得分:1)

我会将该脚本放入一个文件中,然后将liquibase中的文件与runOnChange="true"包含在changeSet中

<changeSet author="arthur.dent" id="42" runOnChange="true">
    <sqlFile path="create_view.sql"
             encoding="UTF-8"
             relativeToChangelogFile="true"
             stripComments="false"
             splitStatements="false"/>
</changeSet>

由于runOnChange,Liquibase将包含实际SQL文件的校验和,并且只有在视图定义发生更改时才会运行它。

另一种选择是使用runAlways="true"代替,然后每次运行Liquibase时都会重新创建视图。这对于自动获取基础表中的更改是必要的。