デフォルト値

データ型仕様のDEFAULT値句は、列のデフォルト値を示します。デフォルト値は定数でなければならず、関数または式にすることはできません。ただし、時間型の場合、 TIMESTAMP列とDATETIME列のデフォルトとしてNOWCURRENT_TIMESTAMPLOCALTIME 、およびLOCALTIMESTAMP関数を指定できます。

BLOBTEXT 、およびJSON列にデフォルト値を割り当てることはできません

列定義に明示的なDEFAULT値が含まれていない場合、TiDB は次のようにデフォルト値を決定します。

  • 列が値としてNULLを取ることができる場合、列は明示的なDEFAULT NULL句で定義されます。
  • 列が値としてNULLを取ることができない場合、TiDB は明示的なDEFAULT句なしで列を定義します。

明示的なDEFAULT句を持たないNOT NULL列へのデータ入力の場合、 INSERTまたはREPLACEステートメントに列の値が含まれていない場合、TiDB はその時点で有効な SQL モードに従って列を処理します。

  • 厳密な SQL モードが有効になっている場合、トランザクション テーブルでエラーが発生し、ステートメントがロールバックされます。非トランザクション テーブルの場合、エラーが発生します。
  • 厳密モードが有効になっていない場合、TiDB は列を列データ型の暗黙のデフォルト値に設定します。

暗黙のデフォルトは次のように定義されます。

  • 数値型の場合、デフォルトは 0 ですAUTO_INCREMENT属性で宣言されている場合、デフォルトはシーケンス内の次の値です。
  • TIMESTAMP以外の日付と時刻の型の場合、デフォルトはその型に適切な「ゼロ」値です。 TIMESTAMPの場合、デフォルト値は現在の日付と時刻です。
  • ENUM以外の文字列型の場合、デフォルト値は空の文字列です。 ENUMの場合、デフォルトは最初の列挙値です。