はじめに

本記事では、任意の列にデフォルト値を設定する方法をご案内いたします。
デフォルト値を設定することで、COPYやINSERTの実行時、設定したデフォルト値が自動的に挿入されます。

構文

デフォルト値は、CREATE文およびALTER文の列定義にDEFAULTオプションを指定することで設定できます。

CREATE文

ALTER文

※デフォルト値には本記事で例示するもの以外にも様々な値を設定できます。
詳しくは後述の「サポートされるデフォルト設定値」をご確認ください。

実行例

本例では、col2_length列にデフォルト値を設定したtestテーブルを作成します。
col2_length列では、LENGTH関数を使用し、col2列の値の文字数が数値データとして挿入されます。

COPY文

COPYコマンドではDEFAULT値を設定したcol2_length列以外の、col1,col2を指定します。
CSVに記述されたデータが、指定したcol1列,col2列にロードされ、col2_length列には設定したデフォルト値が挿入されます。

INSERT文

INSERT文では、VALUESに指定したデータが、列指定したcol1列,col2列にロードされ、col2_length列には設定したデフォルト値が挿入されます。

 

既存データに更新があった際の注意点

一度挿入されたデフォルト値は自動更新されません。
そのため、既存データを更新する際は、手動で更新処理を行う必要があります。

以下のコマンドを使用し、デフォルト値設定列のデータを更新します。

 

既存データを更新する際の対応例を以下に記載します。

サポートされるデフォルト設定値

サポートされるデフォルト値は以下です。
・クエリ
・同じテーブルの他の列
・リテラル
・Verticaがサポートする全ての演算子
・以下の関数
※参考として、それぞれの関数のマニュアルのURLを追記しています

NULL処理関数
https://my.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/Null/NULL-handlingFunctions.htm

ユーザ定義の関数
https://my.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/ExtendingVertica/UDx/ScalarFunctions/ScalarFunctions.htm

システム情報関数
https://my.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/SysInfo/SystemInformationFunctions.htm

文字列関数
https://my.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/String/StringFunctions.htm

数学的な関数
https://my.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/Mathematical/MathematicalFunctions.htm

書式設定関数
https://my.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/Formatting/FormattingFunctions.htm

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。