DISTINCT型UDTの機能 - 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

DISTINCT型UDTの概念は、CおよびC++プログラミング言語のtypedef構造体とよく似ています。しかし、型付けがそれほど強くない事前定義SQLデータ型とは異なり、DISTINCT型UDTは強く型付けされるため、ドメインを施行するには理想的です。UDT列に対してCHECK制約を宣言することはできませんため、UDTをドメインと見なす概念は完全には実装できません。

例えば、内部ではともにDECIMALの数値として表わされるeuroUSDollarを、2つの異なるDISTINCT型UDTとして定義することができます。euroUSDollarを別個のDISTINCT型データ型として定義すると、これらを直接比較したり、交換可能なものとして使用したりすることはできません。この例の場合、euro値をUSDollarタイプ列と比較したり、この列に保存したりすることはできません。

DISTINCT型UDTは内部表現を事前定義データ型(ソース タイプとして参照される)と共有しますが、ほとんどの操作では別個であり互換性のない型と見なされます。PERIODデータ型に基づくDISTINCT型UDTは定義できません。DISTINCT型UDTは、基礎となる事前定義データ型をカプセル化します。これは、基礎となるデータ型に関連付けられる操作と動作は無効であり、DISTINCT型UDTのユーザーだけが、ユーザー定義またはシステム定義のデータ変換、順序付け、およびキャストにより、またインスタンス メソッドを使用した操作により、このカプセル化された値を対話操作できるということを意味します(CREATE TRANSFORMおよびREPLACE TRANSFORMCREATE ORDERINGおよびREPLACE ORDERINGCREATE CASTとREPLACE CAST、およびCREATE METHODをそれぞれ参照)。

以下のSQL文を使用して、UDTのシステム生成セマンティクスを任意に削除し(DISTINCT型UDT用のシステム生成デフォルト機能を参照)、独自の定義に置き換えることができます。
  • DROP CAST。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「DROP CAST」を参照してください。
  • DROP ORDERING(DROP ORDERINGを参照)
  • DROP TRANSFORM(DROP TRANSFORMを参照)

Teradata Databaseは、DISTINCT型UDTのインスタンス メソッドの定義をサポートします。これは、ANSI SQL規格の拡張機能です。例えば、round()というインスタンス メソッドを定義して、新しいDISTINCT型UDTとともに使用することができます。