17.10 - STRUCTURED型UDTへの属性の追加 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-171K-JPN
Language
日本語 (日本)

UDTに属性を追加するたびに、システムは関連するオブザーバーおよびミュテーター メソッドを自動的に生成します。

次のようなルールが、属性の追加に適用されます。
  • 指定するUDTはSTRUCTURED型UDTでなければなりません。
  • 指定するUDTは、他のいかなるデータベース オブジェクトから参照されてもなりません。
  • 任意ののテーブルの列データ型として使用されるなど、他のデータベース オブジェクトによって参照されているUDTに属性を追加することはできません。
    これには、以下のものが含まれます。
    • データベースに、ある1つの列のデータ型が指定のUDTであるテーブルが含まれている場合。
    • 属性のうちの1つのデータ型が指定のUDTである、STRUCTURED型UDTがある場合。
    • 指定のUDTがユーザー定義キャストで参照されている場合(CREATE CASTとREPLACE CASTを参照)。
    • データベースに、指定のUDTを参照するメソッドまたはUDFがある場合。
    • UDTに定義された順序付けまたは変換グループ(CREATE ORDERINGおよびREPLACE ORDERINGおよびCREATE TRANSFORMおよびREPLACE TRANSFORMを参照)。
  • 追加する属性の名前は、指定されたUDTの既存の属性の名前すべてと異なるものでなければなりません。
  • 新しい属性を追加するたびに、データベースは、デフォルトのオブザーバー メソッドとミュテーター メソッドを作成します。

    オブザーバーおよびミュテーターのメソッド シグネチャは、指定されたUDTのすべての既存のメソッド シグネチャと異なるものでなければなりません。

  • サーバー文字データ セットKANJI1の文字データ型をSTRUCTUREDデータ型に追加することはできません。そのようにすると、データベースはリクエスト側にエラーを返します。
これは、UDT開発者はSTRUCTURED型UDTに何らかの属性を追加するに、以下のデータベース オブジェクトすべてに対して必要なクリーンアップをすべて実行しなければならないということを意味します。

また、STRUCTURED型に属性を追加する前に、あらゆる依存オブジェクトを削除する必要もあります。このタスクを容易にするため、SYSUDTLIBデータベースにあるシステム インストール済みのマクロを使用できます。このマクロはすべての依存関係と、これを削除する順番の一覧を表示します。

そのためには、以下のリクエストを入力します。

EXEC SYSUDTLIB.HelpDependencies('UDT_name');

UDT_nameは、属性セットを追加しようとしているSTRUCTURED型UDTの名前です。

ADD ATTRIBUTEオプションを使用して複数の属性を追加できる機能は、ANSI SQL:2011規格へのTeradata拡張機能です。ANSI SQL規格に準拠するALTER TYPEリクエストで一度に1つずつ属性を追加するか、または、ANSI SQL:2011構文へのTeradata拡張機能を使用して複数の属性を同時に追加することができます。

一度に512を超える属性をSTRUCTURED型UDTに追加することはできません。