2017-10-12 12 views
0

私はLiquibase 3.5.3を使用してDB2 LUW 11.0でビューを作成しています。 "replaceIfExists"プロパティをtrueに設定し、実行時に "replaceIfExistsはdb2で許可されていません"というエラーを表示します。LiquibaseでDB2 LUWでビューを作成

私は正式にこのプロパティはLiquibaseのDB2ではサポートされていませんが、データベースapiで許可されていることを知っています(手動でSQLスクリプトを作成または置換して正常に動作します)。

このスクリプトをDB2で実行するにはいくつかの回避策がありますか、またはこの機能を実装できますか?

例:

CREATE OR REPLACE myView AS (
    SELECT * FROM myTable 
) 
+1

一部のプラットフォームのDb2の一部のバージョンでは、「ビューの作成または置換」構文がサポートされています。 LUW(v9.5以上)とi-シリーズ(6.1以上)はこの構文をサポートしていますが、Z/OS用Db2はバージョン12ではサポートされていません。したがって、もしliquibaseが変更されるならば、どのバージョン/プラットフォームがその構文をサポートしているかを(あるいは動的に)知る必要があります。おそらくliquibase.jira.comに関わっていますか? – mao

答えて

1

私は、ファイルにそのスクリプトを配置し、そのためrunOnChangeのチェンジ

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

ためrunOnChange="true"とLiquiBaseを内からファイルが含まれます、LiquiBaseをが含まれています実際のSQLファイルのチェックサムであり、ビューの定義が変更された場合にのみ実行されます。

もう1つの方法は、代わりにrunAlways="true"を使用して、その後、ビューがLiquibaseを実行するたびに再作成されるようにすることです。これは、基礎となるテーブルの変更を自動的に拾うために必要です。

関連する問題