デフォルト値

データ型仕様のDEFAULT value 句は、列のデフォルト値を示します。デフォルト値は定数である必要があり、関数や式は使用できません。ただし、時間タイプの場合は、 NOWCURRENT_TIMESTAMPLOCALTIME 、およびLOCALTIMESTAMP関数をTIMESTAMP列とDATETIME列のデフォルトとして指定できます。

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の場合、デフォルトは最初の列挙値です。

このページは役に立ちましたか?