ビューを使った行の更新のルール - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/vnq1596660420420.ditamap
dita:ditavalPath
ja-JP/vnq1596660420420.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage
ビューでテーブルにアクセスして行を更新するには、次のルールに従わなければなりません。
  • そのビューに対して、UPDATE権限を持っていなければなりません。

    そのビューの直接所有者(すなわち、そのビューを含むデータベース)は、列が更新される基礎となるオブジェクト(ビュー、基本テーブル、または列)に対するUPDATE権限と、WHERE句で指定されたすべてのテーブルに対するSELECT権限を持っている必要があります。

  • ビューの各列は、基礎となるテーブルの列に対応していなければなりません(すなわち、式を使用してビュー内のどの列も算出してはなりません)。
  • インデックス列のデータ型定義は、ビュー定義とビューが参照する実テーブルとの間で一致しなければなりません。

    通常、ビュー列のデータ型の変換(例えばVARCHARからCHARACTERへの変換)は可能であるものの、その変換された列がインデックスの構成要素である場合には、最適化ルーチンは基本テーブルの更新の際にそのインデックスを使用しません。これは、再キャストされた列のデータ型が、インデックス列のデータ型とはもはや一致しないためです。

    その結果、すべてのAMPおよびすべての行が走査され、インデックスの本来のパフォーマンス上の利点が相殺されてしまいます。

  • 2つのビュー列が、同じテーブルの列を参照することはできません。
  • ビューを定義するリクエストにWHERE句とWITH CHECK OPTIONが含まれている場合には、そのビューを介して挿入されるすべての値が、WHERE句に指定された制約を満たしていなければなりません。
  • ビューにWHERE句が含まれ、WITH CHECK OPTIONが指定されていない場合には、データをビューによって挿入することはできますが、挿入されたデータをそのビューで見ることはできません。