2011-06-17 3 views
4

System i Navigatorを使用してDB2でビューを変更または編集するにはどうすればよいですか?私はそれが上に構築された他のビューを削除するので、どのようにわからない。DB2 IBM iseriesでビューを編集してから、それを削除してから再作成する方法はありますか?

+0

何を変更/編集しますか?テーブルの内容?スキーマ? –

+0

"ビュー"。これがDB2での名前の付け方です。それらはテーブルとして保存されたクエリですが、その名前は「ビュー」です。 –

+0

申し訳ありませんが、 '表示'の部分が欠落しています。 私はiNavのコピーを見ましたが、ビューを編集する方法は見当たりません。 COMMONはSystem i Navigatorを使用しています。http://common.org/index.php/webcasts/upcoming-webcasts.html#jan –

答えて

4

iSeriesナビゲーターを使用してビューを変更する方法はありません。ただし、SQLステートメントを使用していて、v7.1以上であれば、新しい "CREATE OR REPLACE VIEW"コマンドを使用することができます:SQL CREATE OR REPLACE syntax

これにより、最初に依存オブジェクトを削除する必要なく、既存のビューを変更できます。たとえば、「VIEW1」から「DESC」という名前の列を使用する「VIEW2」という名前のビューを考えます。次のコマンドを使用して、「VIEW2を」影響を与えることなく、列に「VIEW1」を追加することができます:

CREATE OR REPLACE VIEW MYSCHEMA.VIEW1 AS 
    SELECT DESC, NEWCOL FROM MYSCHEMA.MYTABLE; 

同様に、あなたが他のビューに影響を与えることなく、「VIEW1」から列を削除することができます。唯一の制限は、別のビュー(または関数、エイリアスなど)で使用される列を削除できないことです。別のビューが依存する列を削除しようとすると、エラーメッセージが表示されます。

"REPLACE"メソッドを使用すると、権限/セキュリティの制約もすべて保持されます。

もっと理想的な方法は、スクリプトを介してviews/functions/procs/aliases/etcの作成を自動化することです。これにより、従属オブジェクトを一貫した方法で削除して再作成することができます。これは、データベース管理を中心とした何らかの自動化を前提としており、インデックス付きビューが多数ある場合など、非常に多数の従属オブジェクトがある場合に問題を引き起こす可能性があります。多数の "REPLACE"スクリプトの1つを適用しないか、間違った順序で適用することによって、それらが正しく適用されないということです。

+0

そのビューに基づいてビューを削除しますか? –

+0

"REPLACE"コマンドが他のビューに与える影響を明確にするために、いくつかの追加情報を追加しました。 –

+0

削除と再作成の問題は、再度権限を設定して内部名を変更する必要があることです。 bla_bla_blaという名前の1つのビューは、たとえばbla_0001に切り捨てられます。次回にドロップして作成するとbla_0002となり、他のものはもう機能しません。 –

関連する問題