重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

デフォルト値

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

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

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

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

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

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

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

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