UDT列のNull処理の推奨技法 - 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

null属性をサポートしようとする場合、あるいはnullを返す可能性のあるマップ順序付けルーチンを作成する場合は、その型を指定するCREATE TABLEまたはALTER TABLE文で、そのUDT列にNOT NULL属性を指定する必要があります。

nullが列で許可されていて、UDTに対するマップ順序付けルーチンまたはシステム生成のオブザーバー メソッドのいずれかがnullを返すことができる場合、同一のリクエストに対して返される結果は、クエリーによって異なることがあります。

UDTの順序付けルーチンは列値が等しいかどうかを判別するとともに、ソート操作の照合順序も判別します。

NOT NULL属性をUDT列に対して指定しない場合、以下のオブジェクトは同様に処理されます。

  • NULL列
  • Null属性を含み、マップまたはオブザーバー ルーチンがnullを返すSTRUCTURED型

ある場合にはnullの列が結果セットに返され、別の場合にはnull属性を含んだ非nullのSTRUCTURED型が結果セットに返されます。

以下の単純な例に、テーブル定義でUDTのためにNOT NULL属性を指定する方法を示します。

     CREATE TABLE udtTable (
       id         INTEGER,
       udtColumn  myStructUdtWithNullAttributes NOT NULL);