17.10 - DISTINCT型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-1146-171K-JPN
Language
日本語 (日本)
DISTINCT型の列を更新するには、以下のいずれかが当てはまらなければなりません。
  • 更新される値が同じDISTINCT型でなければならない。
  • CASTが存在する必要があります。これは更新される値の型を列のDISTINCT型に変換するもので、CASTはAS ASSIGNMENTオプションで定義されています(Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144のCREATE CASTを参照)。

    デフォルトでは、DISTINCT型は、この型のシステム生成のCASTを持ちます。

例えば、以下のテーブル定義があると仮定します。

     CREATE TABLE table_1 (
      column1 euro,
      column2 INTEGER)
     UNIQUE PRIMARY INDEX(column2);

以下のテーブル内の情報はtrueになります。

コメント
UPDATE table_1
  SET column1 = 4.56
  WHERE column2 = 5;
DECIMALをeuroに変換する、システム生成またはユーザー定義の、AS ASSIGNMENTオプションで定義されたCASTがある場合に有効です。
UPDATE table_1
  SET column1 = CAST(4.56 AS euro)
  WHERE column2 = 5;
DECIMALをeuroに変換する、システム生成またはユーザー定義の、AS ASSIGNMENTオプションを指定して、または指定せずにAS ASSIGNMENTで定義されたCASTがある場合に有効です。
USING (price decimal(6,2))
  UPDATE table_1
  SET column1 = (CAST (:price AS
    euro)).roundup(0);	
roundup()メソッドがeuro型を返し、DECIMALをeuroに変換するシステム定義またはユーザー定義の、適切なCAST定義がある場合に有効です。
明示的なCAST操作が使用されるので、UDT CASTはAS ASSIGNMENTオプションを使用して定義されている必要がありません。
  1. ホスト変数:priceはeuroに変換されます。
  2. roundup()メソッドが呼び出されます。
UPDATE table_1
 SET column1 = column1.roundup(0);	
roundup()メソッドがeuro型を戻す場合に有効です。
UPDATE table_1
 SET column1 = column3;
有効な列参照。
UPDATE table_1
  SET column1 = NULL
  WHERE column2 = 10;	
DISTINCT型の列へのNULLの有効な設定。