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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

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に追加することはできません。