ビューでテーブルにアクセスして行を更新するには、次のルールに従わなければなりません。
- そのビューに対して、UPDATE権限を持っていなければなりません。
そのビューの直接所有者(すなわち、そのビューを含むデータベース)は、列が更新される基礎となるオブジェクト(ビュー、基本テーブル、または列)に対するUPDATE権限と、WHERE句で指定されたすべてのテーブルに対するSELECT権限を持っている必要があります。
- ビューの各列は、基礎となるテーブルの列に対応していなければなりません(すなわち、式を使用してビュー内のどの列も算出してはなりません)。
- インデックス列のデータ型定義は、ビュー定義とビューが参照する実テーブルとの間で一致しなければなりません。
通常、ビュー列のデータ型の変換(例えばVARCHARからCHARACTERへの変換)は可能であるものの、その変換された列がインデックスの構成要素である場合には、最適化ルーチンは基本テーブルの更新の際にそのインデックスを使用しません。これは、再キャストされた列のデータ型が、インデックス列のデータ型とはもはや一致しないためです。
その結果、すべてのAMPおよびすべての行が走査され、インデックスの本来のパフォーマンス上の利点が相殺されてしまいます。
- 2つのビュー列が、同じテーブルの列を参照することはできません。
- ビューを定義するリクエストにWHERE句とWITH CHECK OPTIONが含まれている場合には、そのビューを介して挿入されるすべての値が、WHERE句に指定された制約を満たしていなければなりません。
- ビューにWHERE句が含まれ、WITH CHECK OPTIONが指定されていない場合には、データをビューによって挿入することはできますが、挿入されたデータをそのビューで見ることはできません。