ミュテーターSET句を使用したSTRUCTURED型UDTの更新 - Teradata Database - Teradata Vantage NewSQL Engine - ミュテーターSET句を使用したSTRUCTURED型UDTの更新、UPDATE文

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/fbo1512081269404.ditamap
dita:ditavalPath
ja-JP/fbo1512081269404.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

ミュテーターSET句は、STRUCTURED型の列を更新するための構文を提供します。ミュテーターSET句は、STRUCTURED型UDT列を更新するためだけに使用できます(ミュテーターSET句内に指定されたcolumn_nameは、STRUCTURED型UDT列と一致する必要があります。)。指定する各ミュテーター メソッド名は、関連するSTRUCTURED型の値の有効なミュテーター メソッド名でなければなりません。

ミュテーター メソッド名は、変更する属性名と同じ名前です。ミュテーターSET句内では、属性名に続く括弧は無効です。

ミュテーターSET句に対して、1つの追加の制約があります。

次の例について考えてみます。

     SET mycol.R = x,
         mycol.y = mycol.R() + 3

Teradataの実装どおりに、式内の列参照は、行が更新される前に行内の列の値を参照します。システムは、例の2つの句を、以下の単一の等価式に変換します。

     mycol = mycol.R(x).y(mycol.R() + 3)

これは、ANSI SQL:2011規格からの逸脱です。

ANSI SQL:2011規格によれば、2番目の例の、ミュテーターSET句の等価式でのmycolへの列参照は、ミュテーターSET句の最初の等価式(xの代入)から加えられた変更を反映する必要があります。

2つの等価式は、以下の単一の等価式に変換されます。

     mycol = mycol.R(x).y(mycol.R(x).R() + 3)