UPDATE文でDEFAULT関数を使用する場合、以下のルールが適用されます。
- DEFAULT関数は、リレーション列を名前で識別する単一の引数を取ります。この関数は、列の現行デフォルト値に等しい値と評価されます。列のデフォルト値が現行の組み込みシステム関数として指定される場合、DEFAULT関数は、リクエストの実行時にシステム変数の現行値と評価されます。
この結果として、DEFAULT関数のデータ型は、デフォルトがヌルでない場合、デフォルトとして指定される定数またはビルトイン関数のデータ型になります。デフォルトがヌルの場合、DEFAULT関数のデータ型は、デフォルトのリクエスト対象である列または式のデータ型と同じになります。
- DEFAULT関数には 2 つの形式があります。DEFAULT関数はDEFAULTまたはDEFAULT (column_name)sとして指定することができます。列名が指定されていない場合、システムは、コンテキストに基づいて列を派生させます。列のコンテキストを派生させることができない場合、リクエストはアボートし、エラーが要求元に戻されます。
- SET句の式として、列名の引数を指定しないDEFAULT関数を指定することができます。DEFAULT関数の列名は、column_nameとして指定された列です。DEFAULT関数は、column_nameとして指定された列のデフォルト値と評価されます。
- 式の一部として、列名の引数を指定しないDEFAULT関数を指定することはできません。それ自体によって指定される必要があります。このルールは、ANSI SQL:2011仕様で定義されています。
- ソース式に、列名の引数を指定しないDEFAULT関数を指定することができます。DEFAULT関数は、DEFAULT関数への入力引数として指定された列のデフォルト値と評価されます。
たとえば、DEFAULT(col2)はcol2のデフォルト値と評価されます。これは、ANSI SQL:2011仕様のTeradata拡張機能です。
- UPDATE式の任意の場所に、列名の引数を指定したDEFAULT関数を指定できます。これは、ANSI SQL:2011仕様のTeradata拡張機能です。
- 列にデフォルト値が明示的に関連付けられていない場合、その列がその引数として指定されていると、DEFAULT関数はNULLと評価されます。
DEFAULT関数の詳細について、<Teradata Vantage™ - SQL関数、式、および述部、B035-1145>を参照してください。