DISTINCT型UDTの概念は、CおよびC++プログラミング言語のtypedef構造体とよく似ています。しかし、型付けがそれほど強くない事前定義SQLデータ型とは異なり、DISTINCT型UDTは強く型付けされるため、ドメインを施行するには理想的です。UDT列に対してCHECK制約を宣言することはできませんため、UDTをドメインと見なす概念は完全には実装できません。
例えば、内部ではともにDECIMALの数値として表わされるeuroとUSDollarを、2つの異なるDISTINCT型UDTとして定義することができます。euroとUSDollarを別個のDISTINCT型データ型として定義すると、これらを直接比較したり、交換可能なものとして使用したりすることはできません。この例の場合、euro値をUSDollarタイプ列と比較したり、この列に保存したりすることはできません。
DISTINCT型UDTは内部表現を事前定義データ型(ソース タイプとして参照される)と共有しますが、ほとんどの操作では別個であり互換性のない型と見なされます。PERIODデータ型に基づくDISTINCT型UDTは定義できません。DISTINCT型UDTは、基礎となる事前定義データ型をカプセル化します。これは、基礎となるデータ型に関連付けられる操作と動作は無効であり、DISTINCT型UDTのユーザーだけが、ユーザー定義またはシステム定義のデータ変換、順序付け、およびキャストにより、またインスタンス メソッドを使用した操作により、このカプセル化された値を対話操作できるということを意味します(CREATE TRANSFORMおよびREPLACE TRANSFORM、CREATE ORDERINGおよびREPLACE ORDERING、CREATE CASTとREPLACE CAST、およびCREATE METHODをそれぞれ参照)。
- 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とともに使用することができます。