使用Liquibase在DB2LUW中创建视图
我正在使用Liquibase 3.5.3在DB2LUW11.0中创建一个视图。 我将“replaceIfExists”属性设置为true,并在运行时给我一个“replaceIfExists在db2上是不允许的”错误 我知道在Liquibase中DB2不支持这个属性,但数据库api允许它(我使用create或replace手动执行sql脚本,工作正常) 在DB2中运行这个脚本有一些变通方法,或者您可以实现这个特性吗 例如:使用Liquibase在DB2LUW中创建视图,db2,liquibase,db2-luw,Db2,Liquibase,Db2 Luw,我正在使用Liquibase 3.5.3在DB2LUW11.0中创建一个视图。 我将“replaceIfExists”属性设置为true,并在运行时给我一个“replaceIfExists在db2上是不允许的”错误 我知道在Liquibase中DB2不支持这个属性,但数据库api允许它(我使用create或replace手动执行sql脚本,工作正常) 在DB2中运行这个脚本有一些变通方法,或者您可以实现这个特性吗 例如: CREATE OR REPLACE myView AS ( SEL
CREATE OR REPLACE myView AS (
SELECT * FROM myTable
)
我会将该脚本放入一个文件中,然后使用变更集的
runOnChange=“true”
从liquibase中包含该文件
<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时都会重新创建视图。这对于自动获取基础表中的更改是必要的 某些平台上的Db2的某些版本支持“创建或替换视图”语法。虽然LUW(高于v9.5)和i-series(高于6.1)都支持这种语法,但DB2forz/OS(版本12)不支持这种语法。因此,如果要更改liquibase,它需要知道(或动态检测)哪些版本/平台支持该语法。也许可以加入liquibase.jira.com?