ビューに対する挿入、更新および削除¶
INSERT
、 UPDATE
、 DELETE
の各ステートメントにより、それぞれ、ビューに対して行を挿入、更新、削除することができます。これらのステートメントは、基盤となるデータソースに保存されたデータを変更します。
ただし、あらゆるデータベース管理システムと同様に、更新できるビューには制限があります。
以下のいずれかのタイプのデータソースから作成された基本ビューは更新可能です。
JDBC データソース
ODBC データソース
Salesforce データソース
更新できるように開発されたカスタムラッパー
別のタイプのデータソースから作成された基本ビューは更新できません。
クエリから作成された JDBC、ODBC および Salesforce の各基本ビューは更新できません。
Virtual DataPort では、SQL 92 標準のルールに従ってビューが更新可能かどうかが判断されます。主な制限事項は以下のとおりです。
ビューの定義に使用されている
SELECT
ステートメントに、DISTINCT
句、GROUP BY
句またはHAVING
句は指定できません。ビューの定義の
FROM
句が参照できるビューは 1 つのみです。そのため、結合ビュー、和結合ビュー、差結合ビューおよび積結合ビューは更新できません。フラット化ビューは更新できません。
ビューの派生フィールドの値は更新できません。
集約関数を使用しているビューは、
GROUP BY
句が指定されていない場合でも更新できません。結合ビューは更新できません。
以下の条件が すべて 満たされる場合のみ、和結合ビューを更新できます。
和結合ビューが分割和結合である (分割和結合については、管理ガイドの「 クエリの冗長な分岐の除外 (分割和結合) 」を参照)。
「クエリの自動簡素化」機能が有効である。
UPDATE
ステートメントのWHERE
条件によって、実行計画のブランチのうち、1 つを除いてすべてをオプティマイザーが削除できる。さらに、実行計画に残されたビューが更新可能である。
入力パラメータがあるビューは、
UPDATE
ステートメントおよびDELETE
ステートメントのWHERE
句でこれらのパラメータの値を指定できる場合は、更新可能です。基盤となるビューが更新できない場合、派生ビューは更新できません。
標準によって課せられている制限に加え、他の制限があります。
Denodo ストアドプロシージャに関連するビューは更新できません。
データベースのストアドプロシージャによって作成された JDBC 基本ビューは更新できません。
DF、JSON および XML の各基本ビューは更新できません。
JDBC および ODBC 基本ビューは更新可能ですが、SQL クエリによって作成された基本ビューは更新できません。
Salesforce 基本ビューは更新可能ですが、SOQL クエリによって作成された基本ビューは更新できません。
カスタムラッパーによる基本ビューが、「 Developer Guide 」で説明されているメソッドを実装している場合は、更新可能です。