デタ型仕様の默认的
句は,カラムのデフォルト値を示しています。例外が1あります。デフォルト値は定数である必要があるので,関数または式にはできません。これは,たとえば日付カラムのデフォルト値に价值
现在()
や当前日期
などの関数の値を設定できないことを意味します。例外では,CURRENT_TIMESTAMP
を,时间戳
およびDATETIME
カラムのデフォルトとして指定できます。セクション11.3.5 " timestampおよびdatetimeの自動初期化および更新機能"を参照してください。
团
および文本
カラムにはデフォルト値を割り当てられません。
カラム定義に明示的な默认的
値が含まれていない場合,MySQLはデフォルト値を次のように特定します。
零
を値として取ることができる場合は,そのカラムは明示的な默认为空
句で定義ができます。
零
を値として取ることができない場合は,MySQLは明示的な默认的
句でカラムを定義できません。例外:カラムが主键
の一部として定義されているが,非空
として明示的には定義されていない場合,MySQLはこれを非空
カラムとして作成します(主键
カラムは非空
である必要があるので)が,暗黙的なデフォルト値を使用してこれに默认的
句も割り当てます。これを防止するには,すべての主键
カラムの定義に明示的な非空
を含めてください。
明示的な默认的
句のない非空
カラムに対するデタエントリでは,插入
または取代
ステトメントにカラムの値を含まれていない場合,または更新
ステトメントがカラムを零
に設定する場合,MySQLはその時点で有効なSQLモドに従ってカラムを処理します。
厳密なSQLモードを有効にした場合,トランザクションテーブルに対してエラーが発生し,ステートメントがロールバックされます。非トランザクションテーブルではエラーが起きるが,これが複数行ステートメントの2行目以降の行に対するエラーの場合,先行する行が挿入されています。
厳密モードが有効でない場合,MySQLはカラムデータ型の暗黙的なデフォルト値にカラムを設定します。
テブルt
が次のように定義されるとします。
创建表t (i INT NOT NULL);
この場合,我
は明示的なデフォルトがないので,厳密モードでは次のそれぞれはステートメントはエラーになり,行は挿入されません。厳密モドを使用しない場合,3番目のステが発生します。最初の2のステトメントでは暗黙のデフォルトが挿入されますが,默认的(我)
が値を生成できないので3番目のステトメントは失敗します。
INSERT INTO t VALUES();INSERT INTO t VALUES(默认);INSERT INTO t VALUES(DEFAULT(i));
セクション5.1.7 "サバSQLモド"を参照してください。
所定のテブルに対して,显示创建表
ステトメントを使用すると,どのカラムに明示的な默认的
句があるかを確認できます。
暗黙的なデフォルトは次のように定義されます。
数値型のデフォルトは
0
です。ただし,例外としてAUTO_INCREMENT
属性で宣言された整数型または浮動小数点型のデフォルトは,そのシケンスの次の値になります。时间戳
以外の日付と時間型のデフォルトには,「ゼロ」値が適切です。explicit_defaults_for_timestamp
システム変数が有効な場合,これは时间戳
にも当てはまります(セクション5.1.4 "サバシステム変数"を参照してください)。それ以外の場合,テブルの最初の时间戳
カラムのデフォルト値は現在の日付と時間になります。セクション11.3 "日付と時間型"を参照してください。枚举
ではない文字列型のデフォルト値は空の文字列です。枚举
のデフォルトは,最初の列挙値です。
整数カラム定義の中の串行默认值
は不是null auto_increment唯一
のエ邮箱リアスです。