17.10 - 例: DEFAULT関数を使用したUPDATEリクエスト - 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
日本語 (日本)

DEFAULT関数は、SET句内の式としての列名なしで指定できます。

DEFAULT関数の列名は、列名として指定された列です。DEFAULT関数は、column_nameとして指定された列のデフォルト値と評価されます。

この例では、次のテーブル定義があることを前提にしています。

     CREATE TABLE table_11 (
       col_1 INTEGER,
       col_2 INTEGER DEFAULT 10,
       col_3 INTEGER DEFAULT 20,
       col_4 CHARACTER(60));

次のUPDATEリクエストは有効です。

次の例では、すべての行のcol3の値を20 (デフォルト値)に更新します。

     UPDATE table_11
       SET col_3 = DEFAULT;

次の例では、col1の値が5である行のCol3の値を20 (デフォルト値)に更新します。

     UPDATE table_11
       SET col_3 = DEFAULT
         WHERE Col1 = 5;

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

     CREATE TABLE table_12 (
       x INTEGER,
       y INTEGER);

次の例では、WHERE条件がtrueと評価されるかどうかによって、col3の値を20 (デフォルト値)に更新します。

     UPDATE table_11
       SET col_3 = DEFAULT
         WHERE 5 < ANY
          (SELECT y
           FROM table_12);

DEFAULT関数は、ソースの式で列名とともに指定できます。DEFAULT関数は、DEFAULT関数の入力引数として指定された名前の列のデフォルト値と評価されます。例えば、DEFAULT(col_2)は、col_2のデフォルト値と評価されます。これは、Teradataの拡張機能です。

次のUPDATEリクエストは有効です。DEFAULT関数の入力引数はcol_2です。したがって、DEFAULT関数は、col_2のデフォルト値と評価され、col_3がこの値に設定されます。具体的には、すべての行に対して、col_3の値を10(col_2のデフォルト値)に更新します。

     UPDATE table_11
       SET col3 = DEFAULT(col_2);

次の例では、col_1の値が5である行のcol_3の値を10(col_2のデフォルト値)に更新します。

     UPDATE table_11
        SET col_3 = DEFAULT(col_2)
         WHERE col_1 = 5;

DEFAULT関数は、UPDATE式の任意の場所で列名とともに指定できます。これは、ANSI SQL:2011規格に対するTeradata拡張機能です。

次のUPDATEリクエストは有効です。DEFAULT関数の入力引数はcol_2であるため、DEFAULT関数はcol_2のデフォルト値と評価されます。次にこのリクエストは、すべての行でcol_3の値を15(10+5、col_2のデフォルト値に5を加えた値)に更新します。

     UPDATE table_11
       SET col_3 = DEFAULT(col_2) + 5;

次の例では、すべての行のcol3の値を15 (col2のデフォルト値に5を加えた値)に更新します。

     UPDATE table_11
       SET col_3 = DEFAULT(col_2) + 5 ALL;

次の例では、col_1の値が20である行のcol3の値を15(col_2のデフォルト値に5を加えた値)に更新します。

     UPDATE table_11
       SET col_3 = DEFAULT(col_2)+5
         WHERE col_1 = 20;

列にデフォルト値が明示的に関連付けられていない場合、DEFAULT関数はNULLと評価されます。

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

     CREATE TABLE table_13 (
       col_1 INTEGER,
       col_2 INTEGER NOT NULL,
       col_3 INTEGER NOT NULL DEFAULT NULL,
       col_4 INTEGER CHECK (col_4>100) DEFAULT 99 );

この例では、col_1はNULL受入れ可能であり、明示的にデフォルト値が関連付けられていないため、DEFAULT関数はNULLと評価されます。

     UPDATE table_13
       SET col_1 = DEFAULT;

次のUPDATEリクエストは等価です。両方のリクエストで、DEFAULT関数はcol_1の値が5である行のcol_3のデフォルト値と評価されます。

     UPDATE table_11
       SET col_3 = DEFAULT(c3)
         WHERE col_1 = 5;
     UPDATE table_11
       SET col_3 = DEFAULT
         WHERE col_1 = 5;