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