ミュテーターSET句を使用したSTRUCTURED型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

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

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

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

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

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

Vantageの実装どおりに、式内の列参照は、行が更新される前に行内の列の値を参照します。システムは、例の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)