ビューを作成、置換、および使用する場合のルールと制限 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage
ビューのクエリー時の予期しない結果または不正な結果を避けるため、ビュー定義の作成時に次のルールに従ってください。
  • 複数のテーブルまたはビューを参照するビューへの操作により、それらのテーブルまたはビューが結合されます。このような操作の効率は、ビューの使い方によって異なります(たとえば、テーブルに定義されたインデックスを使用するかどうか)。
  • ビューを使用する権限を持つユーザーは、そのビュー定義で指定されたロックの設定を変更できます。
  • ビューに参照されるテーブルが、列の追加または削除や、既存の列のデータ型の変更によって修正された場合には、そのビューへのアクセスは、エラー メッセージまたは予想外の結果になります。これは、そのビューが表の列を名前またはSELECT *によって参照している場合に起こります。
  • グローバル一時テーブル、グローバル一時トレース テーブル、および揮発テーブルを参照するビューを作成できます。
  • キュー テーブルにビューを作成することはできません(CREATE TABLE(キュー テーブル形式)を参照)。
  • 再帰的ビュー、WITH句、またはWITH RECURSIVE句をビュー定義で参照できません。
  • BLOB、CLOB、UDT、PERIOD、およびGeospatial列は、SQLでのラージ オブジェクトの使用に対する制限や、ビューの作成または置換のセマンティクスに違反しない限り、ビューで使用できます。
    その種の制限を以下にまとめます。
    • 32を超えるLOB列を実テーブルに作成したり、32を超えるLOBを持つように実テーブルを変更することはできません。ただし、基礎となる実テーブルがサポートする数のLOB列を、ビュー定義に組み込むことは可能です。
    • ビュー定義のGROUP BYまたはHAVING句で、BLOB、CLOB、UDT、PERIOD、およびGeospatial列を指定することはできません。
    • BLOB、CLOB、UDT、PERIOD、およびGeospatial列は、このリストの制限とビュー定義のセマンティクスに従うビューの構成要素にすることができます。

      ラージ オブジェクトおよびPERIODデータ型について詳細は、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。

      Geospatialデータ型について詳細は、<Teradata Vantage™ - 地理空間データ型、B035-1181>を参照してください。

  • DateFormを変更したり、またはtdlocaledefユーティリティを使用してデフォルトの日付形式を変更しても、基礎となる表およびビューから派生するビューの日付列の形式は変更されません。ただし、CREATE VIEW文内の式がDateFormまたはデフォルトの日付形式への日付の評価を必要とする場合、DateFormまたはデフォルトの日付形式に変更を加えるとエラー メッセージが生成されることがあります。日付列の評価エラーを避けるには、日付定数をANSI日付リテラルとして指定し、形式をFORMAT句に指定します。

    tdlocaledef.txtファイルを変更してtparesetコマンドを発行する場合、新しい形式文字列設定は、リセットの作成されるテーブルにのみ影響を与えます。既存のテーブルの列は、ALTER TABLEリクエストを実行して変更しない限り、引き続きDBC.TVFieldsにある現存の形式文字列を使用します(ALTER TABLE (テーブルの基本的なパラメータ)を参照)。

  • データベースは、CREATE VIEWまたはREPLACE VIEWのテキストで構文エラーをチェックしますが、セマンティック エラーに関してはチェックしません。このため、構文的には有効でも、意味が有効でないビューを作成してしまうことがあり得ます。その場合、メッセージは返されません。
  • ビュー定義に意味的なエラーがある場合、ビューを介してテーブルにアクセスするDMLリクエストを実行すると、リクエストがアボートされ、データベースはリクエスト側にメッセージを返します。
  • ビュー定義にORDER BY句を指定できるのは、同時にTOPnまたはTOPmPERCENTオプションも指定した場合だけです。詳細については、ORDER BY句の使用方法を参照してください。

    ビュー定義内の派生テーブル副クエリーでORDER BY句を指定することはできません。