ビューに対する挿入、更新および削除

INSERTUPDATEDELETE の各ステートメントにより、それぞれ、ビューに対して行を挿入、更新、削除することができます。これらのステートメントは、基盤となるデータソースに保存されたデータを変更します。

ただし、あらゆるデータベース管理システムと同様に、更新できるビューには制限があります。

以下のいずれかのタイプのデータソースから作成された基本ビューは更新可能です。

  • JDBC データソース

  • ODBC データソース

  • Salesforce データソース

  • 更新できるように開発されたカスタムラッパー

別のタイプのデータソースから作成された基本ビューは更新できません。

クエリから作成された JDBC、ODBC および Salesforce の各基本ビューは更新できません。

Virtual DataPort では、SQL 92 標準のルールに従ってビューが更新可能かどうかが判断されます。主な制限事項は以下のとおりです。

  • ビューの定義に使用されている SELECT ステートメントに、 DISTINCT 句、 GROUP BY 句または HAVING 句は指定できません。

  • ビューの定義の FROM 句が参照できるビューは 1 つのみです。そのため、結合ビュー、和結合ビュー、差結合ビューおよび積結合ビューは更新できません。

  • フラット化ビューは更新できません。

  • ビューの派生フィールドの値は更新できません。

  • 集約関数を使用しているビューは、 GROUP BY 句が指定されていない場合でも更新できません。

  • 結合ビューは更新できません。

  • 以下の条件が すべて 満たされる場合のみ、和結合ビューを更新できます。

    1. 和結合ビューが分割和結合である (分割和結合については、管理ガイドの「 クエリの冗長な分岐の除外 (分割和結合) 」を参照)。

    2. 「クエリの自動簡素化」機能が有効である。

    3. UPDATE ステートメントの WHERE 条件によって、実行計画のブランチのうち、1 つを除いてすべてをオプティマイザーが削除できる。

    4. さらに、実行計画に残されたビューが更新可能である。

  • 入力パラメーターがあるビューは、 UPDATE ステートメントおよび DELETE ステートメントの WHERE 句でこれらのパラメーターの値を指定できる場合は、更新可能です。

  • 基盤となるビューが更新できない場合、派生ビューは更新できません。

標準によって課せられている制限に加え、他の制限があります。

  • Denodo ストアドプロシージャに関連するビューは更新できません。

  • データベースのストアドプロシージャによって作成された JDBC 基本ビューは更新できません。

  • DF、JSON および XML の各基本ビューは更新できません。

  • JDBC および ODBC 基本ビューは更新可能ですが、SQL クエリによって作成された基本ビューは更新できません。

  • Salesforce 基本ビューは更新可能ですが、SOQL クエリによって作成された基本ビューは更新できません。

  • カスタムラッパーによる基本ビューが、「 Developer Guide 」で説明されているメソッドを実装している場合は、更新可能です。