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