DISTINCT型UDT列の更新 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/vnq1596660420420.ditamap
dita:ditavalPath
ja-JP/vnq1596660420420.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage
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の有効な設定。